帮忙看下这个C语言程序对不?不妥的地方帮忙调试一下。多谢!!!

#include"stdio.h"
#include"string.h"

void zifu()
{
char zf[11]; int i,a,b,c,d,f;
a=b=c=d=f=0;
printf("Enter a string\n");
for(i=0;i<10;i++)
scanf("%c",&zf[i]);
for(i=0;i<10;i++)
{
if(zf[i]>47&&zf[i]<58){a++;}
else if(zf[i]>64&&zf[i]<91){b++;}
else if(zf[i]>96&&zf[i]<123){c++;}
else if(zf[i]==32){d++;}
else {f++;}
}
printf("小写字母 %d 大写字母 %d 数字 %d 空格 %d 其它 %d\n",c,b,a,d,f);

}
void sushu()
{
int a,c,i;
printf("input number :");
scanf("%d",&a);
for(i=2;i<a/2;i++)
if(a%i==0)
c++;
if(c==0) printf("%d素数\n",a);
else printf("%d不是素数\n",a);
}

void shulie()
{
unsigned int a,i,g,l=0,s=1;
printf("您想要输出斐波那契数列的前几项:");
scanf("%d",&a);
for(i=0;i<a;i++)
{
printf("%d ",s);
g=s;
s+=l;
l=g;

}
printf("\n");
}
void lx()
{
int a=40,b,c=-1,j,i,d=19;
for(j=d;j>0;j--)
{
if(j>d/2)
{
a--;c+=2;
}
else{c-=2;a++;}

for(i=0;i<a;i++)
printf(" ");
for(b=0;b<c;b++)
printf("*");
printf("\n");

}
}
void main()
{
int a=1;
int z;
while(a)
{

printf("[1]字符统计\n[2]判断素数\n[3]求斐波那契数列\n[4]使用*号输出菱形\n[5]退出\n");

scanf("%d",&z);
switch(z)
{
case 1: zifu();break;
case 2: sushu(); break;
case 3: shulie(); break;
case 4: lx(); break;
case 5: a=0;break;
default: printf("请输入1~5的数\n");break;
}
}

}
不知道为什么,统计字符的时候如果输入的字符超过10个函数调用结束,就会自动帮你选菜单选项。。。
原题如下!!!!!!
实习九 综合作业(一)
一、实验目的

1、熟悉并掌握程序设计语言的基本机构、C语言的基本语法。

2、掌握分支结构、循环结构的使用。

3、掌握程序设计的基本算法。

二、实验内容

使用函数分别实现:字符分类统计、判断素数、求斐波那契数列和输出菱形图形4个算法。

1、字符分类统计:通过键盘输入一个长度为10的字符串,分别统计出其中大写字母、小写字母、数字、空格和其它字符的个数并输出;

2、判断素数:通过键盘输入一个整数,输入其是否为素数;

3、求斐波那契数列:通过键盘输入一个正整数n,输出前n项斐波那契数列;

4、使用‘*’符号输出菱形图形;

5、退出。

要求通过菜单形式来选择调用那个算法,如下图所示:图片链接地址如下;
http://hi.baidu.com/yljsnsslx/album/%C4%AC%C8%CF%CF%E0%B2%E1

#include"stdio.h"
#include"string.h"
#include "math.h"

void zifu()
{
char zf[100]; int i,a,b,c,d,f;
a=b=c=d=f=0;
getchar();
printf("Enter a string\n");
gets(zf);
for(i=0;zf[i];i++)
{
if(zf[i]>47&&zf[i]<58){a++;}
else if(zf[i]>64&&zf[i]<91){b++;}
else if(zf[i]>96&&zf[i]<123){c++;}
else if(zf[i]==32){d++;}
else {f++;}
}
printf("小写字母 %d 大写字母 %d 数字 %d 空格 %d 其它 %d\n",c,b,a,d,f);

}
void sushu()
{
int a,i;
printf("input number :");
scanf("%d",&a);
for(i=2;i<=sqrt(a);i++)
if(a%i==0)
break;
if(i>sqrt(a)) printf("%d素数\n",a);
else printf("%d不是素数\n",a);
}

void shulie()
{
unsigned int a,i,g,l=0,s=1;
printf("您想要输出斐波那契数列的前几项:");
scanf("%d",&a);
for(i=0;i<a;i++)
{
printf("%d ",s);
g=s;
s+=l;
l=g;

}
printf("\n");
}
void lx()
{
int a=40,b,c=-1,j,i,d=19;
for(j=d;j>0;j--)
{
if(j>d/2)
{
a--;c+=2;
}
else{c-=2;a++;}

for(i=0;i<a;i++)
printf(" ");
for(b=0;b<c;b++)
printf("*");
printf("\n");

}
}
void main()
{
int a=1;
int z;
while(a)
{

printf("[1]字符统计\n[2]判断素数\n[3]求斐波那契数列\n[4]使用*号输出菱形\n[5]退出\n");

scanf("%d",&z);
switch(z)
{
case 1: zifu();break;
case 2: sushu(); break;
case 3: shulie(); break;
case 4: lx(); break;
case 5: a=0;break;
default: printf("请输入1~5的数\n");break;
}
}

}
//完成
温馨提示:内容为网友见解,仅供参考
无其他回答

求大神帮看一下这个C语言程序哪错了,谢谢! 错误提示是expected expressio...
1.mian函数没有return语句,可以改为void型 2.在函数传递参数时不用带上类型

c语言高手帮忙下,看看下面这个程序哪里出错
首先。。。y=3x-1;和y=2x-1;这里,明显是错误的,c语言中的变量不能以数字开头的,3x,2x明显不是变量,应该是想做乘法运算吧,如果是乘法运算的话应该有“*”。其次,else是自动跟上一个没配对掉的if组合,这样的话if(x>=10)y=3x-1;printf("=%d",y);else的写法就不对了,应该在if后...

C语言开关灯问题,麻烦大神们帮我看看这个程序哪里错了啊,结果不对...
1、int a[6000]={1};这句。你这只是将a[0]赋值1,其他都是0,数组默认以0填充,应该改为:int a[6000];for(i=0;i<6000;i++)a[i]=1;2、第二层循环里:if(a[j]==0)a[j]=1;if(a[j]==1)a[j]=0;这个语句把所有的灯都关闭了,因为如果关了,就打开;打开后又关了。逻辑...

C语言设计 求大神帮忙看看 程序写的对吗 它运行不出来结果 有错误请...
可以直接把x=i;这一行删除,然后把下面二行中所有的x都改为i就可以了。

大神帮我看一下这个c语言程序哪里错了可以运行但是无法显示输出结果多 ...
和NO 唯一和你的不同是我在if判断的时候加了类型转换 你试一下看行不行 if((char)psw[i] >= 'A' && (char)psw[i] <= 'Z')f1 = 1;if((char)psw[i] >= 'a' && (char)psw[i] <= 'z')f2 = 1;if((int)psw[i] >= '0' && (int)psw[i] <= '9')f3 = 1;...

大佬帮忙看看这个程序错在哪了,刚学C语言?
修改如下:int main(){int price=0; \/\/该处由‘,’改为‘;’printf("请输入金额(元) :") ;\/\/该处缺少分号scanf("%d",&price);int change=100-price;printf("找您%d元。\\n",change);return 0;} 运行结果如下:

C语言大虾们,给我看看这段程序哪错啦!为什么编译时总出现下列错误? expe...
还有,我想你这个程序实现的功能是不是当输入的数值非0时sign=1;当输入的数值是0时sign=0!?如果是的话,你的条件语句需要用大括号包括起来,因为你所要求的条件满足时需要执行的语句是两条,只有当条件满足时只执行一条语句时才能省去大括号!这是错误之二!希望这两条指出的错误会帮到你!有...

C语言!帮忙看下我写的这个程序错在哪里了,谢谢!用的是二次插值法.
void main(){ float *area(float a1,float p,float a[3]);float f(float x);float ar,fr;float a2,a3;float f1,f2,f3;float a1=10,p=0.01,e=0.00001;float pa[3];area(a1,p,pa);a1=pa[0];a2=pa[1];a3=pa[2];f1=f(a1);f2=f(a2);f3=f(a3);do { ar=((a3*a3-...

请问这段c语言。四则运算的程序为什么不对呢?
二、执行除法时,结果不准,因为两个整数进行除法是进行的所谓“地板除”,只取整。建议代码改成如下:include <stdio.h> int main(void){ int a,b;char fu;printf("请输入运算式:");scanf("%d%c%d",&a,&fu,&b);switch(fu){ case '+' :printf("%d+%d=%d\\n",a,b,a+b);break;...

这个c语言代码错哪里了?
分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。{ z=x+y; t=z\/100; printf(...

相似回答
大家正在搜