c语言数组题

1【程序题】

整数升序。编程要求:①在提示符number:后面输入整数n;②程序以n integers:(n以输入的实际整数替代)的形式提示用户随机输入n个整数,整数之间用空格分隔,用Enter表示输入结束;③程序对输入的n个整数以升序排列之,最后用sorted=A,B,C,……的形式按升序输出;④输出结果后,程序继续显示提示符number:等待下一个输入;⑤当用户在number:后输入的数小于等于0时,程序输出Bye!结束。

下面是程序运行效果:

我的答案:

#include<stdio.h>

int main()

{

int n,a[100],i,j,t;

do

{

printf("number:");

scanf("%d",&n);

if(n<=0)

printf("Bye!\n");

else

{

printf("%d integers:",n);

for(i=0;i<n;i++)

scanf("%d",&a[i]);

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

if(a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;



}

}

}

printf("sorted=");

for(i=0;i<n;i++)

{

printf("%d",a[i]);

if(i!=n-1)

printf(",");

}

printf("\n");

}

}while(n>0);

return 0;

}

2【程序题】

成绩降序。编程要求:①程序以names & scores:的形式提示用户自下行起输入学生姓名与成绩;②程序在每行起始处以Nok:的形式提示输入第k个学生姓名及成绩,k自1始依次递增;③每行输入一位学生的姓名及成绩,姓名由英文字母组成,长度小于10,成绩为int型。姓名与成绩之间用空格分隔;④当用户输入的学生成绩小于0时,表示结束输入,对应小于0成绩的学生姓名不予处理;⑤程序对输入的信息按成绩以降序排列,用sorted=A(S1),B(S2),C(S3),…的形式降序输出。其中S1、S2、S3…分别是第1成绩、第2成绩、第3成绩…,A、B、C…则是取得对应成绩的学生姓名;输出后程序结束;⑥当用户在No1:后输入的学生成绩小于0时,程序直接输出no scores,然后结束。程序运行效果:

我的答案:

#include<stdio.h>

#include<string.h>

int main()

{

char a[100][10],str1[10];

int c[100],i,j,t,k;

printf("names & scores:\n");

for(i=1;;i++)

{

printf("No%d:",i);

scanf("%s%d",&a[i],&c[i]);

if(c[i]<0)

break;

}

if(i==1&&c[1]<0)

{

printf("no scores\n");

return 0;

}

printf("sorted=");

for(k=1;k<i-1;k++)

{

for(j=k+1;j<i;j++)

{

if(c[k]<c[j])

{

t=c[k];

c[k]=c[j];

c[j]=t;

strcpy(str1,a[k]);

strcpy(a[k],a[j]);

strcpy(a[j],str1);

}

}

}

for(k=1;k<i;k++)

{

printf("%s(%d)",a[k],c[k]);

if(k!=i-1)

printf(",");

}

printf("\n");

return 0;

}

3【程序题】

围圈报数 。编程要求:①在提示符number & count:后面输入两个整数n和c,分别代表人数和“报到数”;②n个人围成一圈,首尾衔接。并以1、2、3、…、n按“顺时针”顺序逐人依次用“标号”注定;③从标定为1的人开始顺时针按1、2、3…依次报数,凡报到c者被淘汰“出圈”,然后再从后续者自1起报数,按相同规则将人淘汰“出圈”,直到所有人被淘汰为止;④当n个人都被淘汰后,程序以eliminate order=A,B, C, …的形式按“淘汰顺序”依次输出被淘汰人的标号,结束程序;⑤当用户在number & count:后输入的两个数n和c中至少一个小于等于0时,程序直接输出no people结束。

程序的运行效果:

我的答案:

#include<stdio.h>

int main()

{

int n,c,i,j=0,t=0,a[100],f[100],b;

printf("number & count:");

scanf("%d%d",&n,&c);

if(n<=0||c<=0)

printf("no people\n");

else

{

for(i=0;i<n;i++)

a[i]=i+1;

i=0;

b=n;

while(n>1)

{

if(a[i]!=0)

t++;

if(t==c)

{

f[j]=a[i];

a[i]=0;

t=0;

n--;

j++;

}

i++;

if(i==b)

i=0;

}

for(i=0;i<b;i++)

{

if(a[i]!=0)

f[j]=a[i];

}

printf("eliminate order=");

for(j=0;j<b;j++)

{

printf("%d",f[j]);

if(j!=b-1)

printf(",");

}

printf("\n");

}

return 0;

}

4【程序题】

多次围圈报数 。编程要求:①在提示符number & count:后面输入两个整数n和c,分别代表人数和“报到数”;②n个人围成一圈,首尾衔接。并以1、2、3、…、n按“逆时针”顺序逐人依次用“标号”注定;③从标定为1的人开始逆时针按1、2、3…依次报数,凡报到c者被淘汰“出圈”,然后再从后续者自1起报数,按相同规则将人淘汰“出圈”,直到所有人被淘汰为止;④当n个人都被淘汰后,程序以eliminate order=A,B, C, …的形式按“淘汰顺序”依次输出被淘汰人的标号;⑤输出结果后,程序继续显示提示符number & count:,等待用户的下轮输入;⑥当用户在number & count:后输入的两个数n和c中至少一个小于等于0时,程序输出Bye!结束。

程序的运行效果:

我的答案:

#include<stdio.h>

int main()

{

int n,c,i,j,t,a[100],f[100],b;

do

{

j=t=0;

printf("number & count:");

scanf("%d%d",&n,&c);

if(n<=0||c<=0)

printf("Bye!\n");

else

{

for(i=0;i<n;i++)

a[i]=i+1;

i=0;

b=n;

while(n>1)

{

if(a[i]!=0)

t++;

if(t==c)

{

f[j]=a[i];

a[i]=0;

t=0;

n--;

j++;

}

i++;

if(i==b)

i=0;

}

for(i=0;i<b;i++)

{

if(a[i]!=0)

f[j]=a[i];

}

printf("eliminate order=");

for(j=0;j<b;j++)

{

printf("%d",f[j]);

if(j!=b-1)

printf(",");

}

printf("\n");

}

}while(b>0&&c>0);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值