c语言题目!求高手解答!在线等!

4.编程,输入一行加减运算的字符串(少于80个字符),计算加减运算的结果。
输入输出示例:
10+52-28
y=34
提示:
1)如果输入的字符串中包括数字和加减号以外的字符,提示输入错误。
2)把加减运算符两侧的字符串转换为整数,再运算

5.编程,输入一个字符ch和一个以回车符结束的字符串(少于80个字符),统计字符串中与ch相同的字母个数。

/************** (4) *************/

#include<stdio.h>
#include<string.h>

int main(){
char a[80],c,op=0;
int i=0,r=0,x=0,len;
scanf("%s",a);
len=strlen(a);
c=a[0];
if(c=='+' || c=='-') /*允许首字符为+-号 */
op=c;
while(i<len){
c=a[i];
if( !(c=='+' || c=='-' || c>='0' && c<='9') ){
printf("Error!\n");
return 1;
}
if(c>='0' && c<='9')
x=x*10+c-48; /* '0'的ASCII码=48 */
else if(c=='+' || c=='-'){
if(op=='+'){
r=r+x;
x=0;
}else if(op=='-'){
r=r-x;
x=0;
}else{
r=x;
x=0;
}
op=c;
}
i++;
} //while
if(x!=0)
if(op=='+')
r=r+x;
else
r=r-x;
printf("r=%d\n",r);

return 0;
}

/************** (5) *************/
#include<stdio.h>
#include<string.h>

int main(){
char a[80],c;
int i=0,n=0,len;
printf("c=?");
scanf("%c",&c);
printf("string=?");
scanf("%s",a);
len=strlen(a);
printf("%s,%d\n",a,len);
for(i=0;i<len;i++)
if(a[i]==c)
n++;
printf("n=%d\n",n);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-06
第一个题目不是很难,主要就是判断和赋值
写出思路,不给出全部啊
int i,j,k,zhi;
char a[81],b[][],c[];
int d[][],e[];
a[]=getchar();
for(i=0;a[i]!='\0';i++)
if(a[i]=='0'||a[i]=='1'||a[i]=='2'||a[i]=='3'||a[i]=='4'||a[i]=='5'||a[i]=='6'||a[i]=='7'||a[i]=='8'||a[i]=='9'||a[i]=='+'||a[i]=='-'||a[i]=='*'||a[i]=='/')
continue;
else
{
printf("Error!!!");
exit (0);
}
j=0;
k=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]!='+'||a[i]!='-'||a[i]!='*'||a[i]!='/')
{
b[j][k]=a[i]; //操作数赋值
k++;
}
else
{
c[j]=a[i]; //加减乘除赋值
j++;
b[j][k]='\0'; //最后一个赋值'\0'
k=0;
}
for(i=0,j=0;b[i][j]!='\0';) //操作数变化
d[i][j]=(int)(b[i][j]-='0');

}
明天再写了,今天太晚了
第2个回答  2011-11-06
第五题的
#include <stdio.h>
void main()
{
int i,count=0;
char ch,s[80];
printf("请输入一个字符ch:");
scanf("%c",&ch);
fflush(stdin);
printf("请输入字符串:");
gets(s);

for(i=0;s[i]!='\0';i++)
if(s[i]==ch)
count++;
printf("与ch相同的字符的个数为%d\n",count);
}