帮忙看一个C语言的程序并分析一下谢谢,题目如下:

#include<stdio.h>
#include<string.h>
int main()
{
void sort(char s[][6]);
int i;
char str[10][6];
printf("input 10 strings:\n");
for(i=0;i<10;i++)
scanf("%s",str[i]);
sort(str);
printf("the sorted sequence:\n");
for(i=0;i<10;i++)
printf("%s\n",str[i]);
return 0;
}
void sort(char s[10][6])
{
int i,j;
char *p,temp[10]; //这里定义的*p,和temp[10]有什么用?
p=temp; //这里p=temp是什么意思
for(i=0;i<9;i++)
for(j=0;j<9-i;j++) //这里分别i,j分别是什么作用,可以只用一个j吗?
if(strcmp(s[j],s[j+1])>0)
{
strcpy(p,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],p);
}
}
麻烦解释一下三个注解处…^-^

#include<stdio.h>
#include<string.h>
int main()
{
    void sort(char s[][6]);
    int i;
    char str[10][6];
    printf("input 10 strings:\n");
    for(i=0;i<10;i++)
    scanf("%s",str[i]);
    sort(str);
    printf("the sorted sequence:\n");
    for(i=0;i<10;i++)
    printf("%s\n",str[i]);
    return 0;
}
void sort(char s[10][6])
{
    int i,j;
    char *p,temp[10];  //*p定义了一个指针
    p=temp;           //指针p和temp变量相等
    for(i=0;i<9;i++)
    for(j=0;j<9-i/*这里用到了i*/;j++)   //必须都用,i,j是循环变量,缺一不可,见左边
    if(strcmp(s[j],s[j+1])>0)
    {
        strcpy(p,s[j]);
        strcpy(s[j],s[j+1]);
        strcpy(s[j+1],p);
    }
}追问

for(j=0;j<9-i/*这里用到了i*/;j++) //必须都用,i,j是循环变量,缺一不可,见左边
这里不能直接写成 for(j=0;j<9;j++)吗?

追答

不行呢,9-i和9不一样
还有,把17--30行剪切到2行以下

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

帮忙看一个c语言小程序
其实题主的程序输出的前 30 个数不是 0。但是因为题主的 while 语句没有停止条件,所以是一个无限循环,导致这部分不为零的结果马上就被一大堆 0 覆盖了。你的程序输出的实际结果为:这种结果的原因是,题主定义的 i 类型是 int。int 型在 C 语言中默认代表有符号整数(也就是说也可以表示负整...

C语言题目 求大佬帮看一下
首先说一下题目的答案是:11 程序运行了一下, 截图如下:下面解析一下原因:1、根据判断条件来看,当 k = 10时, while 条件不成立。2、但是需要注意的一点是,在while条件中,使用的是 K++, 而++符号在后面。3、++运算符使用有两种, 先+1在用, 和先使用在+1。而此处使用的明明是后者。4...

求大佬们详细的过程,C语言题谢谢。看程序写结果
每行空格数递减,数字先递增后递减。

谁能帮我分析一下C语言的这个程序
返回值,举个例子:就是编的每一个程序都可以看成一个函数,就是有输入,有输出,这个输出就是返回值的一种。格式是return +结果 C语言中的函数有两种形式:1)有返回值,2)无返回值。有返回值的函数会把执行的结果(也就是你写这个函数的目的)返回到主函数中。没有返回值的函数主要是为了完成...

C语言程序帮忙解决一下。
整理一下题目:score<65 没有获奖 65<score<71 优秀奖 71<=score<=81 三等奖 81<score<=91 二等奖 91< score 一等奖 成绩肯定为正数,所以负数时就退出,成绩还有可能为99.5分,所以设定为单精度类型就好了。程序实现如下图:...

问一道C语言编程的问题,看下图
程序按图片中的程序照猫画虎即可。计算结果,第一天摘了156个桃子,而不是100个。include <stdio.h>int main(){int day,x1,x2;day=5;x2=1;while(day>0){x1=(x2+2)*2;x2=x1;day--;}printf("total=%d\\n",x1);return 0;} 用数学方法按天推算了一下,是156个,无误。

c语言基础(初学) 看看这个程序,分析一下,为什么会出现这个结果,谢谢
32位二进制是这样划分的:FEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM 其中F是符号位和(和整数一样)E是指数位M是有效数字位(看起来是23位,实际上是24位,并且最高位始终为1)指数部分8位,由于指数可以为负数,所以IEEE754规则规定此处的值减去127为实际指数 整数1的二进制是这样存储的 00000000 00000000...

C语言求大神看看这个程序有什么问题?
说实话,你这个题目我好真心没有怎么看懂?如果N大于了数组的个数了?从1到N,指的是从第一个数开始,还是从数值1开始?下面根据自己的想法改了一下,你看看吧:include<stdio.h>void main(){int a[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};int i,j,num;...

请懂c语言的帮忙做一下这个题?
C语言程序如下 include <stdio.h> int main(){ int x,y;printf("请输入x的值:");scanf("%d",&x);if(x<1)y=x;else if(x<10)y=2*x-1;else y=3*x-1;printf("y的值为%d",y);return 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-...

相似回答