c语言数组跳出循环循环ARGV数组参加

共有 13173 人关注过本帖
标题:怎么用回车结束整型数组输入
等 级:新手上路
帖 子:75
结帖率:86.67%
&&已结贴√
&&问题点数:20&&回复次数:13&&&
怎么用回车结束整型数组输入
程序代码:#include &stdio.h&
int main( int argc, char *argv[] )
&&& int i,j,k,t,n,a[<font color=#];
&&& printf(&请输入一组数字:&);
&&& for(n=<font color=#;;n++)
&&&&&&&&if(scanf(&%d&,&a[n])==<font color=#)break;//这里我用字母控制输入结束,怎么才能按回车键就结束输入,显示结果.
&&& for(i=<font color=#;i&n-<font color=#;i++){
&&&&&&&&k=i;
&&&&&&&&for(j=i+<font color=#;j&n;j++){
&&&&&&&&&&&&if(a[k]&a[j])
&&&&&&&&&&&&&&& k=j;
&&&&&&&&if(k!=i)
&&&&&&&&t=a[i],a[i]=a[k],a[k]=t;
&&& for(i=<font color=#;i&n;i++)
&&&&&&&&printf(&%-4d&,a[i]);
&&& return <font color=#;
等 级:ID已被封
威 望:30
帖 子:693
专家分:3898
int main( int argc, char *argv[] )
&&& int i,j,k,t,n,a[100];
&&& printf(&请输入一组数字:&);
&&& for(n=0;;n++)
&&&&&&&&scanf(&%d&,&a[n]);
&&&&&&&&if(getchar()=='\n')
&&&&&&&&//这里我用字母控制输入结束,怎么才能按回车键就结束输入,显示结果.
&&& for(i=0;i&n-1;i++){
&&&&&&&&k=i;
&&&&&&&&for(j=i+1;j&n;j++)
&&&&&&&&&&&&if(a[k]&a[j])
&&&&&&&&&&&&&&& k=j;
&&&&&&&&if(k!=i)
&&&&&&&&t=a[i];
&&&&&&&&a[i]=a[k];
&&&&&&&&a[k]=t;
&&& for(i=0;i&n;i++)
&&&&&&&&printf(&%-4d&,a[i]);
&&& return 0;
我不是砖家,要努力成为砖家。
等 级:ID已被封
威 望:30
帖 子:693
专家分:3898
只需要getchar()=='\n'就可以跳出了!
我不是砖家,要努力成为砖家。
等 级:新手上路
帖 子:75
回复 3 楼 砖家的谎言
getchar会不会吃掉一部分数字
来 自:游鱼潜水
等 级:黑侠
帖 子:202
专家分:542
if(scanf(&%d&,&a[n])==0)
.. scanf的返回值是神马 返回你输入数据的个数
所以你的这个for循环怎么看都感觉怪怪的。。
一般来说提前输入一个int值 这个值是要输入数组元素的个数 然后根据这个来控制数组的读取。
如果你不知道多少个。。。那就麻烦点。。
先想好输入神马算是结束标志~
循环,判断是不是结束标志,不是就继续循环,是就继续循环
关于scanf函数 嗯 http://www.oschina.net/question/11
内容还是很多很有讲究的
未知令人期待!
等 级:新手上路
帖 子:75
回复 5 楼 神机军师
是有点怪,不过是我能想到的最简单的结束方法了.就是不知道输入的个数才麻烦,我想让回车当结束标志,但不知道怎么做.
等 级:贵宾
威 望:304
帖 子:25793
专家分:48814
用流輸入模式是沒有辦法的
授人以渔,不授人以鱼。
等 级:蝙蝠侠
帖 子:309
专家分:913
可以另选一个结束标记。
等 级:ID已被封
威 望:30
帖 子:693
专家分:3898
getchar()只会吃掉最后一个数字,你可以多输入一个,最后一个数字不作为你要用的,这样也能满足你想要的结果!
我不是砖家,要努力成为砖家。
等 级:ID已被封
威 望:30
帖 子:693
专家分:3898
你是不是要把你输入的数进行冒泡排序,我这里改动了下,putchar();并没有吃掉数字,你程序有问题,下面是我改动后的程序,这下没有问题了,你可以试试看
int main( int argc, char *argv[] )
&&& int i,j,k=0,t,n,a[100];
&&& printf(&请输入一组数字:&);
&&&&&&&&for(n=0;n&100;n++)
&&&&&&&&&&&&scanf(&%d&,&a[n]);
&&&&&&&&&&&&k++;
&&&&&&&&&&&&if(getchar()=='\n')
&&&&&&&&&&&&
&&& for(i=0;i&k;i++)
&&&&&&&&for(j=0;j&k-1;j++)
&&&&&&&&&&&&if(a[j]&a[j+1])
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& t=a[j];
&&&&&&&&&&&&&&& a[j]=a[j+1];
&&&&&&&&&&&&&&& a[j+1]=t;
&&&&&&&&&&&&}
&&& for(i=0;i&k;i++)
&&&&&&&&printf(&%-4d&,a[i]);
&&& printf(&\n&);
&&& return 0;
我不是砖家,要努力成为砖家。
版权所有,并保留所有权利。
Powered by , Processed in 0.046868 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved- (浙大PTA)
一个数组A中存有N(&0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1?AN-1)变换为(AN-M?AN-1A0A1?AN-M-1) (最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。
在一行中输出循环右移MMM位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
1 2 3 4 5 6
5 6 1 2 3 4
代码如下:
int main()
//by sunyi
int t = 0,N,M,i,j;
int a[100]= {0};
scanf("%d %d",&N,&M);
for(i=0;i&N;i++)
scanf("%d",&a[i]);
for(j=0;j&M;j++)
for(i=N-2;i&=0;i--)
a[i+1]=a[i];
for(i=0;i&N;i++)
printf("%d ",a[i]);
printf("%d",a[i]);
//printf("\n");
没有注意到输出格式,提交了n次都是格式错误。。。浪费了n个小时,好气啊!!!!
在网上也看到了更好的算法,还需要继续学习。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:235次
排名:千里之外华中科技大学C语言试卷_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
华中科技大学C语言试卷
上传于||文档简介
&&试&#8203;题&#8203;而&#8203;已
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩25页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢&&/&&&&/&&
新建一个文件,包含若干条学生信息,将它们读入到一个数组,然后再把数组输出到另一个文件。文件名是通过命令行参数传递的。
该程序涉及到main()函数传参的问题,请查看:
#include &stdio.h&
#define SIZE 10
#define NAMESIZE 25
typedef struct {
char name[NAMESIZE];
// n 为数组 a 的元素个数,filename 为写入的文件名
void writeStudentArray(char filename[], student a[], int n)
// filename 的文件描述符
if((fd=fopen(filename,&w&))==NULL){
perror(&fopen&);
for (i=0;i&n;i++){
fprintf(fd,&%s %d %d %d\n&, a-&name, a-&midterm, a-&final, a-&homeworks);
fclose(fd);
// 最多从 filename 文件中读取 nmax 条学生信息,并保存到数组 a。该函数返回实际读取的记录的条数。
int readStudentArray(char filename[], student a[], int nmax)
// filename 的文件描述符
if((fd=fopen(filename,&r&))==NULL){
perror(&fopen&);
while(fscanf(fd,&%s %d %d %d&, a-&name, &a-&midterm, &a-&final, &a-&homeworks)!=EOF){
if(++i==nmax)
// 已经将表格填满
fclose(fd);
int main(int argc, char *argv[]){
student table[SIZE];
if(argc!=3){
printf(&Usage: %s infile outfile\n&, argv[0]);
n = readStudentArray(argv[1],table,SIZE);
writeStudentArray(argv[2],table,n);
该程序构建后,需要通过命令行工具(cmd.exe)运行。
例如,我编译后的程序在 E:\cDemo\Debug\ 文件,需要操作的两个文件位于 D 盘根目录,分别为 input.txt 和 output.txt,output.txt 为空,input.txt 的内容为:
cyuyan &45 &20 &30
see./cpp/ & 35 &90 &100
tom &89 &99 &88
需要在命令行进行如下操作:
打开 output.txt,发现与 input.txt 的内容一样。
推荐文章 TOP10}

我要回帖

更多关于 c语言 循环数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信