标题:C语言考试大纲(教学材料都在大纲里面)--求大家一起合力把答案和讨论写在这里 ...
取消只看楼主
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
好吧,我就贡献一下第19题吧

19.    将数组a[10]逆序存放。

程序代码:
#include <stdio.h>
#define N 10
int main()
{
    int t,i,a[N]={0,1,2,3,4,5,6,7,8,9};

    for(i=0;i<N;i++)
    {
         printf("a[%d]=%-12d",i,a[i]);
         if(i%3==0)
             printf("\n");
    }

    printf("\n");

    for(i=0;i<=(N-1)/2;i++)
    {
        t=a[i];
        a[i]=a[N-1-i];
        a[N-1-i]=t;
    }

    for(i=0;i<N;i++)
    {
        printf("a[%d]=%-12d",i,a[i]);
        if(i%3==0)
            printf("\n");
    }

    printf("\n");

    return 0;
}


[此贴子已经被作者于2016-12-14 01:56编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-14 01:51
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
20.    编程实现从键盘输入一句话保存在数组中,统计其包含的英文字母个数并输出统计结果。

程序代码:
#include<stdio.h>
int main()
{
    char s[80];
    char *p=s;

    int count=0;

    gets(s);//其实这里并不太推荐用gets,可以用scanf("%[^\n]s%*c",s);代替输入,不过新手先用gets也未尝不可~

    for (;*p;++p)
    {
        if (*p>='a'&&*p<='z')
            count++;
        else if (*p>='A'||*p<='Z')
            count++;
    }

    printf("%d\n",count);

    return 0;
}


[此贴子已经被作者于2016-12-14 02:24编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-14 02:01
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
25.    请编写函数fun, 函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入, 规定所有单词由小写字母组成,单词之间由若干个空格隔开, 一行的开始没有空格。

程序代码:
#include<stdio.h>
int fun(char s[])
{
    char *p=s;

    int word=1;

    if (*p=='\0')
        return 0;

    for (;*p;++p)
        if (*p!=' '&&*(p+1)==' ')
            ++word;

    if (*(p-1)==' ')  
        --word;

    return (word);
}
int main()
{
    char s[80]={"\0"};

    gets(s);//其实这里并不太推荐用gets,可以用scanf("%[^\n]s%*c",s);代替输入,不过新手先用gets也未尝不可~

    printf("%d\n",fun(s));

    return 0;
}


[此贴子已经被作者于2016-12-14 02:22编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-14 02:19
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
26.    请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄在主函数中通过键盘输入并存放在age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推, 把100岁 (含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。

程序代码:
#include<stdio.h>
#define N 10
void fun(int a[],int d[])
{
    int *p=a;

    for (;p-a<N;++p)
    {
        if (*p>100)
            *p=100;

        ++d[*p/10];
    }
}
int main()
{
    int a[10];
    int d[11]={0};
    int *p=a;

    for (;p-a<N;++p)
        scanf("%d",p);
    
    fun(a,d);

    for (p=d;p-d<10;++p)
        printf("age:%2d-%2d %3d\n",(p-d)*10,(p-d)*10+9,*p);

    printf("age>=100  %3d\n",*p);

    return 0;

}


[此贴子已经被作者于2016-12-14 02:41编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-14 02:37
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
28.    请编写函数fun,实现功能是: 比较两个字符串,将长的那个字符串的首地址作为函数值返回。

程序代码:
#include<stdio.h>
char *fun(char s1[],char s2[])
{
    char *p1=s1;
    char *p2=s2;

    for (;*p1&&*p2;++p1,++p2);

    return (*p1?s1:s2);
}
int main()
{
    char s1[80]={"\0"};
    char s2[80]={"\0"};

    printf("%s\n",fun(gets(s1),gets(s2)));


    return 0;
}


[此贴子已经被作者于2016-12-14 03:17编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-14 02:56
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 56楼 王子的新衣
本来就用电脑版啦~如果手机打开不了可以把那文件弄到电脑来整~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-14 10:08
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
还差29~搞定这题就收工了

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-14 23:41
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
编写函数fun,函数的功能是: 移动字符串中的内容,移动的规则如下: 把第1到第m个字符, 平移到字符串的最后, 把第m+1到最后的字符移到字符串的前部。例如, 字符串中原有的内容为: ABCDEFGHIJK, m的值为3, 则移动后, 字符串中的内容应该是: DEFGHIJKABC。
这个是在某题类似拷贝下来的,把这个改成字符串输入处理就行了~
我已经把难度降低了啊

程序代码:
#include<stdio.h>
void main()
{
    void move(int array[20], int n, int m);
    int number[20],n,m,i;
    printf("the total numbers is:");
    scanf("%d",&n);
    printf("back m:");
    scanf("%d",&m);
    for(i=0;i<n-1;i++)
        scanf("%d,",&number[i]);
    scanf("%d",&number[n-1]);
    move(number,n,m);
    for(i=0;i<n-1;i++)
        printf("%d,",number[i]);
    printf("%d\n",number[n-1]);
}
void move(int array[20], int n, int m)
{
    int *p,array_end;
    array_end=*(array+n-1);
    for(p=array+n-1;p>array;p--)
        *p=*(p-1);
    *array=array_end;
    m--;
    if(m>0) move(array,n,m);
}


好吧,整理后的代码如下:

程序代码:
#include<stdio.h>
void main()
{
    void move(char array[20], int n, int m);
    int n,m,i;
    char  str[20];
    printf("the total numbers is:");

    scanf("%d",&n);

    printf("back m:");

    scanf("%d",&m);

    getchar();
    gets(str);

    move(str,n,m);
    for(i=0;i<n-1;i++)
        printf("%c",str[i]);

    printf("%c\n",str[n-1]);
}
void move(char array[20], int n, int m)
{
    char *p,array_end;
    array_end=*(array+n-1);
    for(p=array+n-1;p>array;p--)
        *p=*(p-1);
    *array=array_end;
    m--;
    if(m>0) move(array,n,m);
}


[此贴子已经被作者于2016-12-14 23:53编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-14 23:48
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 63楼 嘲风
正常啊,毕竟这不是正规标准答案啊,有什么问题可以提出来说说~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-23 17:10
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 65楼 嘲风
现在外出手机看帖,回去再敲代码~矩阵转置,有a[i][j]=a[j][i]的关系~注意避免重复交换的问题~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-23 17:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-472217-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.158731 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved