最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

c语言经典习题6答案

来源:动视网 责编:小OO 时间:2025-10-01 19:28:52
文档

c语言经典习题6答案

CLanguageExercise–Chapter6题目:了解如何从命令行获取参数。从命令行获取参数后,按照相反的次序打印出来。exam45了解利用指针处理字符串,实现strlen(char*s)函数,计算一个字符串中的字符个数。exam46了解利用指针处理字符串,实现strcpy(char*s1,char*s2,intn)函数,把s2中的前n个字符拷贝到s1中。exam47了解指针数组。用程序对China,America,Japan,Russa,Franch这5个字符串进行从小到大排序。ex
推荐度:
导读CLanguageExercise–Chapter6题目:了解如何从命令行获取参数。从命令行获取参数后,按照相反的次序打印出来。exam45了解利用指针处理字符串,实现strlen(char*s)函数,计算一个字符串中的字符个数。exam46了解利用指针处理字符串,实现strcpy(char*s1,char*s2,intn)函数,把s2中的前n个字符拷贝到s1中。exam47了解指针数组。用程序对China,America,Japan,Russa,Franch这5个字符串进行从小到大排序。ex
C Language Exercise – Chapter6

题目:

了解如何从命令行获取参数。从命令行获取参数后,按照相反的次序打印出来。exam45
了解利用指针处理字符串,实现strlen(char *s)函数,计算一个字符串中的字符个数。

exam46
了解利用指针处理字符串,实现strcpy(char *s1, char *s2, int n)函数,把s2中的前n个字符拷贝到s1中。

exam47
了解指针数组。用程序对China, America, Japan, Russa, Franch这5个字符串进行从小到大排序。

exam48
了解函数指针。把第三章实践课的计算器软件中操作符所对应的函数,用函数指针来引用。exam49
了解函数指针。实现2个函数,calcA(char a, char b), calcB(int a, int b, int c)通过命令行获取第一个参数,如果是0,调用calcA对命令行输入的第二个字符和第三个字符进行求和,如果是0,调用calcB对命令行输入的第二个整数、第三个整数和第四个整数进行求和。

exam50
了解函数指针作为函数参数。把指向函数的指针作为参数传递给一个函数,函数a设置一个全局变量k=100,函数b有2个参数,一个是指向函数的指针,一个int counter,函数b返回把k+counter的值。

exam51
了解函数指针作为数组元素。从标准输入接收0-5中的一个数字,不同的数字调用不同的函数,每个函数都打印出当前的数字值和总共输入数字的次数。

exam52

/*----------------exam45---------------*/

#include

int main(int argc, char ** argv)

{

    int i;

for (i=0; i    printf("Argument %d is %s.\\n", i, argv[i]);

    int j=0,n=0;

    char b[80];

    while(argv[1][j]!='\\0')

        {

            n++;

            j++;

        }

for(j=0;j    b[n-1-j]=argv[1][j];

    b[n]='\\0';

    printf("Argument  is %s.\\n",  b);

    return 0;

}

/*--------------------exam50------------------*/

#include "stdio.h"

int calcA(char a,char b) {int z=(a+b);return(z);}

int calcB(int a,int b,int c) {return(a+b+c);}

int main(int argc, char ** argv)

{

    

    int i,j=0,k1=0,k2=0,n=0;

    char c[100],b[2];

    int a[3]; int v[80]={0};

    int (*p)(char a,char b);

    int(*q)(int a,int b,int c);

    p=calcA;

    q=calcB;

for (i=0; i    printf("Argument %d is %s.\\n", i, argv[i]);

for(i=1;i    while(argv[i][j]!='\\0')

        {

            v[i]++;

            j++;

        }

for(i=1;i for(j=0;j<=v[i];j++)

    c[n++]=argv[i][j];

for(j=1;j    {

        if( c[j]>='0' && c[j]<='9')

            {

                if(k1<=2) 

                a[k1++] = c[j]-'0';

            }

        else if( c[j]>='a' && c[j]<='z')

            {

                if(k2<=1) 

                b[k2++] = c[j];

            }

        else {}

    }

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

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

        printf("\\n");

    

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

        printf("b[ %d ] is %c\",i,b[i]);

        printf("\\n");

    if(c[0]=='0') printf("%d\\n",(*p)(b[0],b[1]));

    else  printf("%d\\n",(*q)(a[0],a[1],a[2]));

    return 0;

}

/*------------头文件1.h--------------*/

void exam38();

void exam40();

void exam41();

void exam42();

void exam43();

void exam44();

void paixu(int a[10]);//排序函数

char *cmp(char a[80],char b[80]);//比较函数

char *cat(char a[80],char b[80]);//连接函数

void exam46();

int Strlen(char *s);

char *Strcpy(char *s1, char *s2, int n);

void exam47();

void exam48();

void exam52();

void sta1(int *a);

void sta2(int *a);

void sta3(int *a);

void sta4(int *a);

void sta5(int *a);

int define_();

int b(int define_(),int counter);

void exam51();

void add();

void sub();

void mul();

void div();

void mod();

void exam50();            

#include"stdio.h"

#include"string.h"

#include"windows.h"

#include"conio.h"

#include"math.h"

#include"1.h"

/*--------------------------------*/

void exam38()

{

int i=32;

int *p;

printf("%d\%d\\n",&i,&p);

p=&i;

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

printf("%d\%d\\n",i,*p);

*p=100;

printf("%d\%d\\n",i,*p);

}

/*--------------------------------*/

void paixu(int a[10])

{

    int temp;

for(int i=0;i<9;i++)

        for(int j=0;j<9-i;j++)

            if(a[j] < a[j+1])

                {

                    temp = a[j] ;

                    a[j] = a[j+1];

                  a[j+1] = temp;

                }

}

void exam40()

{

int a[10]={5,6,4,7,8,9,3,1,2,10};

paixu(a);

int s=4;

int *p;

p=a+s;

for(s=4;s<10;s++,p++)

printf("%4d",*p);

printf("\\n");

}

/*----------------------------*/

void exam41()

{

float a=1,*p;

p=&a;

printf("%d\",p);

char *c;

c=(char *)1244968;

short int *i;

i=(short int *)1244968;

printf("%d\%d\\\n",c,i);

printf("%c\\n",*c);

printf("%d\\n",*i);

}

/*---------------------------*/

char *cmp(char a[80],char b[80])

{

    char *p;

        if(strcmp(a,b)<0)

            {

                p=a;

            }

        else 

            {

                p=b;

            }

    return p;

}

void exam42()

{

    char a[80]={"gem "},b[80]={"welcome"};

    char *q;

    q=cmp(a,b);

    puts(q);

}

/*------------------------------*/

char *cat(char a[80],char b[80])

{

    strcat(a,b);

    return a;

}

void exam43()

{

    char a[80]={"gem "},b[80]={"welcome"};

    char *q;

    q=cat(a,b);

    puts(q);

}

/*-------------------------*/

void exam44()

{

    int i=65;

    int *p;

    int **q;

    p=&i;

    q=&p;

    printf("数据i的地址:%d \ 指针p所指向的地址:%d \ q指向指针p的地址 %d \\n",i,p,q);

    i+=1;

    printf("%d \ %d \ %d \\n",i,*p,**q);

    (*p)+=1;

    printf("%d \ %d \ %d \\n",i,*p,**q);

    (**q)+=1;    

    printf("%d \ %d \ %d \\n",i,*p,**q);

}

/*-----------------------------*/

int Strlen(char *s)

{    int n=0;

    while(*s != '\\0')

        {

            n++;

            s++;

        }

    return n;

}

void exam46()

{

    char a[80];

    int i;

    gets(a);

    i=Strlen(a);

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

}

/*----------------------------*/

char *Strcpy(char *s1, char *s2, int n)

{

    char *p;

for(int k=0;k    {

        s1[k] = *s2;

        s2++;

    }

    s1[k]='\\0';

    p=s1;

    return p;

}

void exam47()

{

    char *q;

    char a[80],b[80];

    gets(a);

    gets(b);

    int n;

    printf("请确认将前几个字符拷贝到a中:\\n");

    scanf("%d",&n);

    q=Strcpy(a,b,n);

    puts(q);

}

/*--------------------------------*/

void exam48()

{

    char *a[5]={"China

    int i,j;

    char *t;

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

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

if(strcmp(a[i],a[j])>0)

            {

                t=a[i];

                a[i]=a[j];

                a[j]=t;

            }       

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

       puts(a[i]);    

}

/*--------------------------------*/

void sta1(int *a)

{    int n=0;

for(int i=0;i<10;i++)

        if(*(a+i)==1) n++;

    printf("当前数字 1 总共出现 %4d 次\\n",n);

}

void sta2(int *a)

{    int n=0;

for(int i=0;i<10;i++)

        if(*(a+i)==2) n++;

    printf("当前数字 2 总共出现 %4d 次\\n",n);

}

void sta3(int *a)

{    int n=0;

for(int i=0;i<10;i++)

        if(*(a+i)==3) n++;

    printf("当前数字 3 总共出现 %4d 次\\n",n);

}    

void sta4(int *a)

{    int n=0;

for(int i=0;i<10;i++)

        if(*(a+i)==4) n++;

    printf("当前数字 4 总共出现 %4d 次\\n",n);

}

void sta5(int *a)

{    int n=0;

for(int i=0;i<10;i++)

        if(*(a+i)==5) n++;

    printf("当前数字 5 总共出现 %4d 次\\n",n);

}

void exam52()

{

    void (*sta[5])(int *a);

    sta[0]=sta1;

    sta[1]=sta2;

    sta[2]=sta3;

    sta[3]=sta4;

    sta[4]=sta5;

    int b[10];

    printf("请输入整型数组中的元素:\\n");

for(int i=0;i<10;i++)

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

    printf("请确认您要统计的元素:\\n");

    fflush(stdin);

    int j;

    scanf("%d",&j);

    switch(j)

        {

        case 1:sta[0](b);break;

        case 2:sta[1](b);break;

        case 3:sta[2](b);break;

        case 4:sta[3](b);break;

        case 5:sta[4](b);break;

        default:printf("error!\\n");break;

        }

}

/*-----------------

void exam8()

{

    char a[5][80]={"China

    int i,j;

    char t[80];

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

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

if(strcmp(a[i],a[j])>0)

            {

                strcpy(t,a[i]);

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

                  strcpy(a[j],t);

            }       

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

       puts(a[i]);

}*/

/*----------*/

int define_()

{

    extern int k;

    k=100;

    return k;

}

int b(int define_(),int counter)

{    int z;

    z=define_();

    return (z+counter);

}

void exam51()

{

int c;

int (*p)();

p=define_;

printf("请输入一个数:\\n");

scanf("%d",&c);

printf("%d\\n",b(*p,c));

}

void add()

{float i,j;                printf("\\n\你要做的是加法,请出入操作数例如:2 3!\\n\\n");

                scanf("%f %f",&i,&j);

                if( i>0 && j>0 &&(i+j)<0) {printf("\\n\输入的数超标了 !\\n\\n");}

                else printf("\\n\%5.1f + %5.1f = %5.1f!\\n",i,j,i+j);

}

void sub()

{float i,j;                printf("\\n\你要做的是减法,请出入操作数例如:2 3!\\n\\n");

                scanf("%f %f",&i,&j);

                printf("\\n\%5.1f - %5.1f = %5.1f!\\n",i,j,i-j);

}

void mul()

{float i,j;                printf("\\n\你要做的是乘法,请出入操作数例如:2 3!\\n\\n");

                scanf("%f %f",&i,&j);

                if( i>0 && j>0 &&(i*j)<0) {printf("\\n\输入的数超标了 !\\n\\n");}

                else printf("\\n\%5.1f * %5.1f = %5.1f!\\n",i,j,i*j);

}

void div()

{float i,j;                printf("\\n\你要做的是除法,请出入操作数例如:2 3!\\n\\n");

                scanf("%f %f",&i,&j);

                 if(fabs(j)<0.000001)

                {printf("\\n\你要做的是除法,除数不能为0!\\n\\n");}

                else printf("\\n\%5.1f / %5.1f = %5.1f!\\n",i,j,i/j);

}

void mod()

{float i,j;

loop:printf("\\n\你要做的是求余,请出入操作数例如:2 3!\\n\\n");

                scanf("%f %f",&i,&j);fflush(stdin);

                if((fabs(i)-(int) i>0.000001)||(fabs(j)-(int) j>0.000001))

                {printf("\\n\你要做的是求余,因为有小数部分,将强制转换(将四舍五入)!\\n\\n");

                printf("\\n\确认请按任意键,返回请输入'$'!\\n\\n");

                char g;

                g=getchar();

                fflush(stdin);

                if(g=='$') goto loop;}

                if(fabs(i)-(int) i>0.5) i++;if(fabs(j)-(int) j>0.000001) j++;

                printf("\\n\%d %% %d = %d!\\n",(int )i,(int )j,((int) i)%((int) j));

}

void exam50()            

{

system("color 1a");

    printf("\\n\\n\\阳哥计算器");

    printf("\\n\\*********\\n");

    printf("\\* 1 2 3 *\\n");

    printf("\\* 4 5 6 *\\n");

    printf("\\* 7 8 9 *\\n");

    printf("\\* 0 + - *\\n");

    printf("\\* * / %% *\\n");

    printf("\\*********\\n\\n\\n");

    char a;

    float i,j;

    int ff=1;

    while(ff){

    printf("\\n\请出入操作符:+ - * / %% !\\n\\n");

        a=getchar();

        getchar();

    switch(a)

    {    case '+':add();break;

        case '-':sub();break;

        case '*':mul();break;

        case '/':div();break;

        case '%':mod();break;

        default:printf("error!\\n请正确的出入操作符:+ - * / %% !\\n");

    }

    fflush(stdin);

    printf("\\n退出程序请输入'#',继续请输入任意键!");

    a=getchar();

    fflush(stdin);

    if(a =='#') ff=0;

    }    

}

/*-------主函数----------*/

#include"stdio.h"

#include"1.h"

 int k;

void main()

{

//    exam38();

//    exam40();

//    exam41();

//    exam42();

//    exam43();

//    exam44();

//    exam46();

//    exam47();

//    exam48();

//    exam52();

 exam51();

 // exam50();            

}

文档

c语言经典习题6答案

CLanguageExercise–Chapter6题目:了解如何从命令行获取参数。从命令行获取参数后,按照相反的次序打印出来。exam45了解利用指针处理字符串,实现strlen(char*s)函数,计算一个字符串中的字符个数。exam46了解利用指针处理字符串,实现strcpy(char*s1,char*s2,intn)函数,把s2中的前n个字符拷贝到s1中。exam47了解指针数组。用程序对China,America,Japan,Russa,Franch这5个字符串进行从小到大排序。ex
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top