C语言经典例题100(87~100)

八十七、回答结果(结构体变量传递)

输出依然为3,a。函数f传递的是变量a的一个副本复制。

#include "stdio.h"
struct student
{ int x;
char c;
} a;
main()
{a.x=3;
a.c='a';
f(a);
printf("%d,%c",a.x,a.c);
}
f(struct student b)
{
b.x=20;
b.c='y';
}

八十九、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

#include<stdio.h>

//先设计一个判断数字是否为4位的函数
int Judge_Num(unsigned int a)
{
    int n=a/1000;
    if((n>=1)&&(n<=9))
        return 1;
    else 
        return 0;
}

//编码函数
unsigned int Code_Num(unsigned int a)
{
    unsigned int b[4],m=a;
    int i;
    for(i=0;i<4;i++)
    {
        b[i]=m%10;
        b[i]=(b[i]+5)%10;
        m=(m-m%10)/10;
    }
    return b[3]+b[2]*10+b[1]*100+b[0]*1000;
}

int main()
{
    unsigned x,y;
    unsigned int Code_Num(unsigned int a);
    printf("请输入一个四位数
");
    scanf("%d",&x);
    if(Judge_Num(x))
    {
        y=Code_Num(x);
        printf("原数为%d,加密后为%d。
",x,y);
    }
    else
    {
        printf("原数为%d,位数不为4。
",x);
    }
    getch();
    return 0;
}

    

九十、读结果。

54321

#include "stdio.h"
#define M 5
main()
{int a[M]={1,2,3,4,5};
int i,j,t;
i=0;j=M-1;
while(i<j)  
{t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
i++;j--;
}
for(i=0;i<m;i++)  
printf("%d",*(a+i));
}

九十六、计算字符串中子串出现的次数。

#include<stdio.h>
#include<string.h>

int main()
{
    char str[]="i a m xyz amtys 1280i a m!OPi a m**";
    char str1[]="i a m ";
    int i,j,k;
    int len=strlen(str);
    int len1=strlen(str1);
    i=j=k=0;
    while(i<len)
    {
        if(str[i]!=str1[j])
        {
            i++;
            continue;
        }
        else
        {
            for(j=0;j<len1;i++,j++)
            {
                if(str[i]==str1[j])
                    continue;
                else
                    break;
            }
            if(j==len1)
            {
                j=0;
                k++;
            }
        }
    }
    printf("出现次数为%d.
",k);
    getch();
    return 0;
}



        
        

九十七、从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。

#include<stdio.h>
#include<stdlib.h>

int main()
{
    char c;
    FILE *fp;
    fp=fopen("ex97.txt","wb");
    if(fp==NULL)
    {
        printf("File Open Error!
");
        exit(1);
    }
    printf("please input a string ending by '#'.
");
    while((c=getchar())!='#')
        putc(c,fp);
    fclose(fp);
    return 0;
}

九十八、从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以!结束。

#include<stdio.h>
#include<stdlib.h>

int main()
{
    char str[1000];
    FILE *fp;
    int i=0;
    printf("input a string.
");
    gets(str);
    
    while(str[i]!='')
    {
        if((str[i]>='A')&&(str[i]<='Z'))
            str[i]+=32;
        i++;
    }
    puts(str);
    fp=fopen("test.txt","w");
    if(fp==NULL)
        printf("File Open Error!
");
    else
    {
        fputs(str,fp);
        fclose(fp);
    }
    getch();
    return 0;
}

九十九、有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//字符串按字母顺序排列
void sort_char(char *s1)
{
    int len=strlen(s1);
    int i,j;
    char c;
    for(i=0;i<len-1;i++)
        for(j=i+1;j<=len-1;j++)
        {
            if(s1[i]<s1[j])
            {
                c=s1[j];
                s1[j]=s1[i];
                s1[i]=c;
            }
        }
}


int main()
{
    char sa[200],sb[200];
    FILE *fpa,*fpb,*fpc;
    int i=0;
    void sort_char(char *s1);
    fpa=fopen("a.txt","rb");
    fpb=fopen("b.txt","rb");
    fpc=fopen("c.txt","w");
    if(fpa==NULL)
    {
        printf("File A Open Error!
");
        exit(1);
    }
    if(fpb==NULL)
    {
        printf("File B Open Error!
");
        exit(1);
    }
    if(fpc==NULL)
    {
        printf("File C Open Error!
");
        exit(1);
    }
    fgets(sa,200,fpa);
    fgets(sb,200,fpb);
    strcat(sa,sb);
    sort_char(sa);
    puts(sa);
    fputs(sa,fpc);

    getch();
    return 0;
}

一百、有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,把原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX_Size 5

struct student
{
    int num;
    char name[20];
    float score[3];
    float ave;
}stu[MAX_Size];

int main()
{
    int i;
    FILE *fp;
    struct student s1;
    printf("请输入各学生的信息:
");
    for(i=0;i<MAX_Size;i++)
    {
        printf("请输入第%d个学生的学号:
",i+1);
        scanf("%d",&stu[i].num);
        printf("请输入第%d个学生的姓名:
",i+1);
        scanf("%s",stu[i].name);
        printf("请输入第%d个学生第1门课的成绩:
",i+1);
        scanf("%f",&stu[i].score[0]);
        printf("请输入第%d个学生第2门课的成绩:
",i+1);
        scanf("%f",&stu[i].score[1]);
        printf("请输入第%d个学生第3门课的成绩:
",i+1);
        scanf("%f",&stu[i].score[2]);
    }
    for(i=0;i<MAX_Size;i++)
    {
        stu[i].ave=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
    }
    if((fp=fopen("stu.txt","w"))==NULL)
    {
        printf("file open error!
");
        exit (0);
    }
    else
    {
        for(i=0;i<MAX_Size;i++)
        {
            fwrite(&stu[i],sizeof(struct student),1,fp);
        }

        fclose(fp);
    }
    getch();
    return 0;
}
原文地址:https://www.cnblogs.com/tsembrace/p/3268593.html