初学C语言一道简单的C语言编程题~我的做的哪有毛病?

作者&投稿:暴疫 (若有异议请与网页底部的电邮联系)
初学C语言的一个简单编程题,求我的问题在哪.~

错误1:main()函数没有函数类型 用void类型或者其他,例如:void main(){}
错误2:switch语句中的case 后面没有break 就会一直执行,知道结束或者遇 到break为止,default语句是swtich的必执行语句。我似乎明白你的意思,但是你这里有明显的逻辑错误。

改正如下:
include"stdio.h "
void main()
{
//定于数据要初始化
long n = 0;
int dn = 0;
int n1 = 0;
int n2 = 0;
int n3 = 0;
int n4 = 0;
int n5 = 0;

printf("input an integer 0~99999");
scanf("%d",&n);
if n>99999 dn=-1;
else if n>9999 dn=5;
else if n>999 dn=4;
else if n>99 dn=3;
else if n>9 dn=2;
else if n>=0 dn=1;
else dn=-1;

switch(dn)
{
case 5 :
n5=n/10000;
case 4 :
n = n - 10000*n5;
n4=n/1000;
case 3 :
n = n - 1000*n4
n3=n/100;
case 2 :
n = n - 100*n3;
n2=n/10;
case 1 :
n1 = n - 10*n2;
case -1 :
n1=n2=n3=n4=n5=-1;
}
printf("这是一个%d位数",dn);
printf("
第1位数是%d
第2位数是%d
第3位数是%d
第4位数是%d
第5位数是%d,n1,n2,n3,n4,n5");
}

手写的没调试过,你自己试试吧

#include #include #define N 20 bool judge (int a[ ], int n) /* 判断每个孩子手中的糖果是否一样多 */ { int i; for (i = 1; i < n; i++) if (a[0] != a[i]) return 0; return 1;} void print(int src[],int n){ for(int i=0;i<n;i++){ printf("%d ",src[i]); } printf("
");}int main(){ int kid[N], aftadjust[N]; int i, n, teacheradd, times; printf("请输入幼儿园里有多少个孩子
"); scanf("%d", &n); printf("请输入孩子们一开始各自都有多少糖
"); for (i = 0; i < n; i++) { scanf("%d", &kid[i]); printf("第%d名孩子手上一开始有%d颗糖
", i+1, kid[i]); } teacheradd = 0; times = 0; while (!judge(kid,n)) /*调整孩子们手中的糖果数量*/ { times++; for (i = 0; i < n; i++) { if (kid[i] % 2) { ++kid[i]; teacheradd++; } aftadjust[i]=kid[i]/2; } for(i=0;i<n;i++){ if(i==n-1){ kid[0]=kid[0]/2+aftadjust[i]; continue; } kid[i+1]=kid[i+1]/2+aftadjust[i]; } //print(kid,n); } printf("一共调整了 %d 次
", times); printf("最后每个孩子都有 %d 颗糖果
", kid[0]); printf("调整过程中老师新增发了%d 颗糖果。
", teacheradd); }

帮你改了一半,改不下去了,给你说一下你的问题吧:
一、函数结构
int main()
{ //函数基本格式 int main() { } , 括号要紧跟main()之后 你这里少一个{
int i,j,a,b,t,q;
二、10的i次方
j=10^i; 这不能表示10的i次方 , 它表示10与i进行异或

想实现10的i次方可以这样:
j=1;
for(i=1;i<=5;i++)
{
j *= 10 ; //j每次乘10,可达到效果,循环前j赋值为1
三、if语句
if(a>=0&&a<=99999) 成立做数据处理,如果输入的数据不符号条件呢?按你的程序,就会直接运行到
b=i;
printf("%d\n",b); 这里来了。这应该不是你所希望的吧
所以,加个else {
printf("input error\n");
return -1;
}
四、最后,你的程序代码想取每一位并输出
for(;b>=1;b--)
{
//q=a/10^(b-1); //这里同样存在前面的问题,因为前面j已经乘到了10的5次方,这里就做整除好了
j /= 10 ;
q=a/j ;
a %= j ; //a取余

printf("%d",q);
}
修改后的完整代码
#include <stdio.h>
int main()
{
int i,j,a=-1,b,t,q;
scanf("%d",&a);
if(a>=0&&a<=99999)
{
j=1;
for(i=1;i<=5;i++)
{
j *= 10 ;
t=a/j;
if(t==0)
break;
}
}
else
{
printf("input error\n");
return -1;
}
b=i;
printf("%d\n",b);
for(;b>=1;b--)
{
j/=10 ;
q=a/j ;
a %= j ;
printf("%d",q);
}
printf("\n");
return 0;
}

#include<stdio.h>
#include <stdlib.h>
#include <math.h>
void n_number(int a)
{
int i,j,tmp;
int r[100];
if(a>100000)
{
printf("error!");
exit(0);
}
for(i=1;i<7;i++)
if(a/(int)pow(10.0,i)>0)
continue;
else
break;
printf("%d\n",i);
for(;i!=0;i--)
{
tmp=a/(int)pow(10.0,i-1);
printf("%d\n",tmp);
a-=tmp*(int)pow(10.0,i-1);
}
}
void main()
{
int a,n;
printf("input:");
scanf("%d",&a);
n_number(a);
}

错误是什么


一个特别简单的c语言 那个第三题。。我还没有学那些复杂的东西
首先你有2处错误,第一个是if else if else 表达式中的,应该是==,而不是= 第二个是b[6]应该要初始化变量 b[6]={0} 我修改了,你运行下看看是不是你要的答案 include <conio.h> include <stdio.h> include <string.h> void fun(char a[], int b[]){ \/\/--ksstart(注释不能...

求最简单的C语言程序
include<stdio.h> main(){ int a,b,t=0;scanf("%d %d",&a,&b);if (a

一道简单的C语言选择题……
A.未见过 B.输出整形 C.输出长整形 D.输出无符号整形

一个简单的c语言写的俄罗斯方块程序?
可以使用EasyX库来画出简单的图形, EasyX库是在VC下实现TC的简单绘图功能的一个库,这个库很容易学会(直接 百度EasyX库,里面有详细的教程)那么如何画出方块,方块已经存储到一个short类型中了 从short中读取出,可以用一个掩码mask = 1来与short的每个bit位相与,结果为1,则画出一个小方块; 函数...

C语言指针一道简单的编程题
按照你的要求编写的C语言程序如下 include<stdio.h>int main(){ int a,b; int *p=&a; a=30; printf("a=%d\\n",*p); p=&b; scanf("%d",p); a=*p+24; printf("a=%d,b=%d",a,b); return 0;}运行结果a=3076a=100,b=76 ...

C语言编程问题,初学者,麻烦简单点,可以看懂的,谢谢(*°∀°)=3?_百...
首先分两种情况:一、a为0,bx+c=0,求得一解。二、a不为0,按照一元二次方程公式:当判别式b^2-4ac,>0则两个解,=0则一个解,<0则无解。最后,代入公式求解。函数参数:a,b,c及存放结果的数组x。返回解的个数。下面是代码:include <stdio.h> include <math.h> int fun(double a...

一道简单的C语言问题,找2
include <stdio.h>int main(){int n,i,j,s=0; scanf("%d",&n); for(i=2;i<=n;i++) for(j=i;j;j\/=10) if(j%10==2)s++; printf("%d\\n",s); return 0;}

小弟刚学C语言,有个简单的编程问题
include <stdio.h> mian (){float x,y,z,w;\/*不是要判断三个数吗?那就没有必要用五个数了;还有你的这一句最后变量怎么既加逗号又加分号啊*\/ scanf("%f%f%f",&x,&y,&z);\/*输入格式里面不要用逗号,否则在输入的时候你也得原样输入逗号,而逗号我们往往忘记输入便出错*\/ w=x<y?(x...

C语言 一道简单的选择题,菜鸟求助~
D可以转为:include<stdio.h> void main(){ int n=0;char ch;while (ch=getchar() && ch!='\\n'){ n++;} printf ("%d\\n", n);} 例如你输入a然后回车,ch是不是等于a\\n?ch=getchar(),getchar是输入字符,a肯定!='\\n'啦,n++,继续循环又输入bc\\n,但是ch只认一个,那就是b...

请教一个很简单的c语言问题,我是初学者
仅分析第二条语句printf("a%cb%c\\bc%c\\tabc\\n",c1,c2,c3); } 其中a输出a-》“a”,c输出c1也就是a-》“aa”,b输出b-》“aab”,c输出c2也就是b-》“aabb”,\\b输出退格,把上一个b擦掉了-》“aab”,c输出c-》“aabc”,c输出c3->"aabcc",\\t输出TAB符号,前进八个空格-...

灌南县15811187636: 一道C语言的简单题 新手提问假设a=4 b=5 c=6 编程求出下列表达式的值A a+b>c&&b==cB a||b+c&&b - cC (a>b)&&!c||1D (x=a)&&(y=b)&&0E (a+b)+c - 1 && b+c... -
章唐左旋:[答案] B,C,E为1A,D为0 验证:#include int main(){ int a = 4, b = 5, c = 6,x,y; if(a+b>c&&b==c) puts("a1"); if( a||b+c&&b-c) puts("b1"); if(!(a>b)&&!c||1) puts("c1"); if( !(x=a)&&(y=b)&&0) puts("d1"); if( ...

灌南县15811187636: 求解一道简单的C语言C程序C编程题 -
章唐左旋: 题目没说清.1.输入仅限于小写字母还是所有字符;2 y,z输出a,b还是也按ASCII码向后推两位.#include <stdio.h>#include <string.h> int main() { char iword; char oword; while(iword = getchar()) { if(iword == '\n') break; oword = (iword - 95) % 26 + 97; printf("%c",oword); } printf("\n"); return 0; } 输入:abcdefxyz 输出:cdefghzab 此程序仅限输入小写字母.

灌南县15811187636: 求助:一道C语言程序的题,急!初学还不怎么会,谢谢,多给分 -
章唐左旋: main(){ int a[10],b[10],c[10]; int i; int *p; printf("please input a[10]:\n"); p=a; for(i=0;i<10;i++) scanf("%d...

灌南县15811187636: 一道简单的C语言编程题
章唐左旋: 如下,望采纳#include <stdio.h>#include <stdlib.h> int main(){ int a[10],i,j; for(i=0;i<10;i++) scanf("%d",&a[i]); //输入10个数 //冒泡排序,从小到大 for(i=0;i<10;i++) { for(j=i+1;j<10;j++) { if(a[j]<a[i]) { int tmp=a[j]; a[j]=a[i]; a[i]=tmp; } } } //输出 for(j=0;j<10;j++) printf("%d ",a[j]); printf("\n"); return 0;}

灌南县15811187636: 一道简单的c语言题目,高手来,跪求..新手..没分给最佳 -
章唐左旋: #include"stdio.h" #define N 5 void main() {int i,j=0,a[5];double s=0,sum=0;printf("请输入五个数:\n");for(i=0;iscanf("%d",&a[i]); for(i=0;i { s+=a[i]; sum=s/N; } for(i=0;i { if(a[i]>sum) j++; } printf("平均分是=%d\n低于平均分的人数=%d",sum,j); }

灌南县15811187636: 一道非常简单的C语言题
章唐左旋: min=(a[i]>a[i-1])?min:a[i]; 如果a[i]>a[i - 1],始终比较的是当前元素和上一个元素,这是最根本的错误,比如 3 2 4 3这条语句的运行过程就是,min = 24>2 -> min = 2;3 min = 3;最终结果,min = 3;显然是不对的. 正确的是要始终跟当前的min比较,而且不要刻意去追求语句简短,条件运算符并不一定具有更高的效率.min = (a[i]

灌南县15811187636: 简单的C语言编程题,请帮忙做一下 -
章唐左旋: 1)#include<stdio.h> int main() { int n; scanf("%d",&n); if(n%2==1)n++;else n+=2;printf("%d\n",n); system("pause");return 0; }2) #include<stdio.h> int main() { int n,m; scanf("%d %d",&n,&m); if(n%m==0)printf("%d是%d的倍数\n",n,m);else printf("%d不是%d的倍数\n",n,m); system("pause");return 0; }

灌南县15811187636: 一道C语言的简单题 -
章唐左旋: #include void main() { int a,b,he,cha,ji,shang,yu; printf("请输入两个整数:\n"); scanf("%d %d", he=a+b; cha=a-b; ji=a*b; shang=a/b; y...

灌南县15811187636: 简单的C语言编程题目
章唐左旋: /* Note:Your choice is C IDE */#include "stdio.h"void main(){ int ch; printf ("请输入你要查询的型号:\n"); scanf ("%d",&ch); switch (ch) { case (537): printf ("537型号价格为3.50元"); break; case (538): printf ("538型号价格为5.50元"...

灌南县15811187636: 一条简单的c语言编程题. -
章唐左旋: 对于c编程,首先是算法问题.对于这问题你可以定义买i元公鸡,j元母鸡,z元小鸡.int i,j,z{for(i=0,j=0,z=0;i<100,j<100,z<100,i++,j++,z++)x+y+z=100x/5+y/3+3z=100}ret...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网