一道C语言问题,程序略长,高手请进

作者&投稿:訾侧 (若有异议请与网页底部的电邮联系)
C语言高手请进,求一个程序~

#include
#include
#include
void sort(char **str,int n)
{
int i,j,k;
char *temp;
for(i=0;i<n;i++)
{
for(j=i+1,k=i;j<n;j++) if(strcmp(str[j],str[k])<0)k=j;
if(k!=i)
{
temp=str[k];
str[k]=str[i];
str[i]=temp;
}
}
}
main()
{
int i;
char *str[5];
for(i=0;i<5;i++)
{
str[i]=(char*)malloc(sizeof(char)*1000);
gets(str[i]);
}
sort(str,5);
printf("
Sorted Order:
");
for(i=0;i<5;i++)
{
printf("%s
",str[i]);
free(str[i]);
}
}


编译测试通过,您可以自己检验一下。第一次写的看错题目了,这次应该没错了。

望采纳,谢谢:)

楼上说的没错。当if后面有多条语句时,如果需要在if条件下运行的话,必须使用{}。

其实这道题可以不改动什么。只要将
if(c>max) {mid=max;max=c;printf("%d,%d,%d",min,mid,max); }

这句后面的printf语句删除即可。这样一来那个{}也可以省略了。

input 'a','b','c','d','e' to execute calculation of add,min
:a
2+10=12
7+32=22
your answer is wrong,try again:24
your answer is wrong,try again:55
sorry,you have try three times!
32+33=65
2+43=44
your answer is wrong,try again:55
your answer is wrong,try again:44
sorry,you have try three times!
42+28=

#include<stdio.h>
#include<stdlib.h>
#include<ctime>
static int all=0,w=0,r=0;
main()
{
int add(int a,int b);
int min(int c,int d);
int mul(int e,int f);
int divi(int g,int h);
char i;
int a,b,c,d,e,f,g,h;
srand((unsigned)time(NULL));
printf("input 'a','b','c','d','e' to execute calculation of add,minus,multify,divide,out:");
scanf("%c",&i);
switch(i)
{
case 'a':while((getchar())!='e')
{
add(a,b);}break;
case 'b':while((getchar())!='e')
{
min(c,d);}break;
case 'c':while((getchar())!='e')
{
mul(e,f);}break;
case 'd':while((getchar())!='e')
{
divi(g,h);}break;
case 'e':break;
default:printf("Error!\n");}
w=all-r;
printf("all:%d,right:%d,wrong:%d\n",all,r,w);
printf("Thank you for using this program!\n");
return 0;
}

int add(int a,int b)
{
int ad,answer;
int retry(int j,int k);
a=rand()%50+1;
b=rand()%50+1;
printf("%d+%d=",a,b);
ad=a+b;
all++;
scanf("%d",&answer);
if(retry(answer,ad))
r++;
else
w++;
return (r);
}
int min(int c,int d)
{
int mi,answer;
int retry(int answer,int mi);
c=rand()%100+1;
d=rand()%100+1;
while(c<d)
d=rand()%100+1;
printf("%d-%d=",c,d);
mi=c-d;
all++;
scanf("%d",&answer);
if(retry(answer,mi))
r++;
return (r);}

int mul(int e,int f)
{
int mu,answer;
int retry(int answer,int mu);
e=rand()%100+1;
f=100/e;
while(f==1)
{e=rand()%100+1;
f=100/e;}
printf("%d*%d=",e,f);
mu=e*f;
all++;
scanf("%d",&answer);
if(retry(answer,mu))
r++;
else
w++;
return (r);
}
int divi(int g,int h)
{
int div,answer;
int retry(int j,int k);
g=rand()%100+1;
h=rand()%100+1;
while((g%h)!=0||g<h||h==1)
{g=rand()%100+1;
h=rand()%100+1;
}
printf("%d/%d=",g,h);
div=g/h;
all++;
scanf("%d",&answer);
if(retry(answer,div))
r++;
else
w++;
return (r);
}
int retry(int j,int k)
{
int chance,l;
l=j;
for(chance=1;chance<3;chance++)
{
if(l!=k)
{
printf("your answer is wrong,try again:"); //提示错误
scanf("%d",&l); //并重新输入
}
else
break; //相等则跳出循环
}
if(chance>=3)
{
printf("sorry,you have try three times!\n");
return 0;
}
else
return 1;
}

不清楚你们怎么调试通过的,在TC2下这段程序的错误起码有30处.....最简单的,在输入结果的时候你输入一个字符串试试。


C语言问题,请问这两道程序阅读题是怎么分析的?
fp=fopen("mytest.dat","wb+"); 打开文件,2进制,wb+方式。fwrite(buf,.); 从文件开始处,写8个int值,即87654321。fseek(4,SEEK_SET), SEEK_SET是从文件开始处,向下移动4个int位置,文件指针指到4321前面。fread(buf) 读4个数,即文件中文件指针下的4,3,2,1, 进入 buf[0]...

关于一个C语言程序的问题!求大侠解答!
答案是9 34225 7396 81 900 include<stdio.h> include<math.h> int main(){int A,M,E,R,Y,X,S,T,O,L,MERRY,XMAS,TO,ALL,sMERRY,sXMAS,sTO,sALL;for(A=1;A<=9;A++){if((A!=1)&&(A!=4)&&(A!=9))continue;for(M=1;M<=9;M++){if(M==A)continue;for(E=0;E<=9;...

c语言出现了一个问题,导致程序停止正常工作,请关闭程序
1、野指针,你使用的指针指向未知区域 2、scanf函数输入整形、字符……的时候缺少了& 3、缓冲区溢出,也就是说你使用数组时不经意间越界了

C语言设计一个运算10道问答题的程序
include <stdio.h> void check(double correct_answer[],double answer[],char question[10][100]){ int i,score=0;for(i=0;i<10;i++)if(answer[i]!=correct_answer[i])printf("第%d题“%s”:答案错误,正确答案应为:%.1Lf\\n",i+1,question[i],correct_answer[i]);else score+=...

关于C语言程序设计的几道题。学霸们帮一下忙吧。
第六题:include <stdio.h> include <string.h> int main(){ char str[100];gets(str);int t=strlen(str);for(int i=0;i<=t\/2;i++)if(str[i]!=str[t-i-1]){ printf("所输入的字符串不是回文字符串\\n");return 0;} printf("所输入的字符串是回文字符串\\n");} 第五题:...

求几道C语言问题的详细解答过程
5.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。用输入0来结束输入,用i,j来放统计数,请填空完成程序。main(){ int n,i=0,j=0;printf(“input a integer,0 for end\\n”);scanf(“%d”,&n);while(n) \/\/这里跟第2题中if(a)一样,n为零才为假 ...

c语言问题:下面程序不是无限循环的是
C不是无限循环,'\/0'为字符0,代表的值为0,通过for的判断,条件不成立,不进入循环。A,2>=0条件恒成立,表达式值恒为1,所以无限循环 B,逗号表达式取最后一个表达式的值,即3+5,表达式3+5的值为8,不为0,所以无限循环 D,while判断的条件为1,恒满足,所以无限循环 ...

几道c语言程序题目 求高手帮忙
1)1 2)预处理指令#include<string> char 变量名 3)sizeof 是变量 类型名 数组定义的长度包括\\0strlen是实际定义的长度不包括\\0 4)应该先定义后使用 5)答案有错误 应该是 1;2.000000 希望我们以后可以经常讨论C语言问题 呵呵

C语言问题,求过程以及解释谢谢
while语句不用看,不满足条件 直接看第一个for循环,J==2,i==1,第一次循环,a[3]=a[2]==5 第二次循环,a[2]=a[1]==4 退出循环 a[1]=k==3 得a[5]={1,3,4,5} include<stdio.h>int main(){ int i=1,n=3,j,k=3; int a[5]={1,4,5}; while(i<=n&&k>...

c语言编程程序问题
include <stdio.h> int main(void){ unsigned i,n;double sum;printf(" 这是一个计算 1 + 1\/2 + 1\/3 + ... + 1\/(n-2) + 1\/(n-1) + 1\/n 的程序\\n");printf(" 请输入n的值(正整数):");scanf("%d",&n);for(i=1;i<=n;i++)sum+=(double)1\/i;if(n==1)p...

稻城县19511407574: 一道C语言题目,请高手给详细解答: -
殳苇过氧: 1、从main()主函数开始从上往下执行函数2、执行到调用函数fun()后,结果是a=3,b=4,即px=3,py=43、由于是px、py是指针,px和 x指向同一个地址, py 和y也是一样的4、所以输出...

稻城县19511407574: 一道C语言题,高手请进
殳苇过氧: //细节方面请看注释.. //只允许输入A~Z 26个大写字母. #include<stdio.h> int key[100]; int m; int ans[100]; int ansm; int a[26][100]; int len[26]; void solve(int k,int t) { int i,j,p,q; if(t==1) { ansm=0; for(i=0;i<m;i++) { for(j=0;j<len[k];j++) { if(key[i]==a[k][j])...

稻城县19511407574: 求解一道C语言题,高手请进入
殳苇过氧: 以下是程序和附图 #include <stdio.h> int main() { int i, j ,k=-1; for( i = 3; i < 4; i+=k) { for ( j = 0; j < 4-i-1; ++j ) printf( " " ); for ( j = 0; j < 2*i+1; ++j ) printf( "*" ); putchar( '\n' ); if ( i == 0 ) k = 1; } }

稻城县19511407574: 一道C语言题,高手请进来!
殳苇过氧: #include<stdio.h> void main() {int city[2],i,j; printf("请输入城市的最高温度和最低温度:\n"); for(i=0;i<4;i++) {for(j=0;j<2;j++) { printf("请输入城市%d的最高温度:\n",i); scanf("%d",&city[0]); printf("请输入城市%d的最低温度:\n",i); scanf("%d",&city[1]); } } for(i=0;i<4;i++) {for(j=0;j<2;j++) printf("城市%d最高气温为%d度,最低气温为%d度.\n",i,city[0],city[1]); } }

稻城县19511407574: C语言编程问题 高手进... 高分加... -
殳苇过氧: #include "stdio.h"void main(){int i,j,a[10][10]; a[0][0]=a[1][0]=a[1][1]=1; printf("%4d\n%4d%4d\n",a[0][0],a[1][0],a[1][1]); for(i=2;i<...

稻城县19511407574: C语言一道小小的题目 高手请进
殳苇过氧: 我觉得答案是D;要是答案不对请不要看了.对的话,那么下面是我的解释: 首先第一条输入语句scanf(“%c”,&c);只能接收一个字符的东西.其余的只好由以后的变量来接收.所以在变量c里面只有你输入进来的1.然后23俩个以整形数据的形式存储在变量i;中然后空格造成整形的输入终止.进入下一个输入语句中下一个是字符串的输入可以接受scanf语句所能接受的所有字符因此将456存储进去.但是scanf语句是不能接受空格的在接受空格后自动认为输入完成.所以后面的789并没有被变量保存.所以在进行输出的时候只能输出D的形式

稻城县19511407574: 一个C语言编程题,C语言高手请进!
殳苇过氧: // 这是使用应用程序向导生成的 VC++ // 应用程序项目的主项目文件. #include "stdafx.h" #using <mscorlib.dll> using namespace System; #include<iostream> void fucresult();//求函数的值并且存入数组 sum[] int maop();//函数值排序 ...

稻城县19511407574: C语言高手请进,求一个程序 -
殳苇过氧: #include <stdio.h> #include <string.h> #include <malloc.h> void sort(char **str,int n) {int i,j,k;char *temp;for(i=0;i<n;i++){for(j=i+1,k=i;j<n;j++) if(strcmp(str[j],str[k])<0)k=j;if(k!=i){temp=str[k];str[k]=str[i];str[i]=temp;}} } main() {int i;char *str[5...

稻城县19511407574: 一道c语言方面的问题,请各位高手帮忙解答一下 -
殳苇过氧: 勉强着用吧,调试已经通过. #include #include...

稻城县19511407574: 问一道C程序题高人进一下
殳苇过氧: C语言中,对于带有小数点的,如果不去声明它的类型,默认的就会是double. 如果你把4.0改成4.0f,结果就是float类型的拉!

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