C 练习实例81-90

来源:互联网 发布:windows xp声卡驱动 编辑:程序博客网 时间:2024/05/01 17:37

81.题目:809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

#include <stdio.h>void output(long int b, long int i){    printf("\n%ld = 800 * %ld + 9 * %ld\n", b,i,i);}int main(){    void output(long int b, long int i);    long int a,b,i;    a = 809;    for(i = 10; i < 100; i++){        b = i * a;        if (b >= 1000 && b <= 10000 && 8 * i < 100 && 9 * i >= 100){            output(b, i);        }    }    return 0;}


82.题目:八进制转换为十进制

#include<stdio.h>#include<stdlib.h>int main(){    int n=0,i=0;    char s[20];    printf("请输入一个8进制数:\n");    gets(s);    while(s[i]!='\0'){        n=n*8+s[i]-'0';        i++;    }    printf("刚输入的8进制数转化为十进制为\n%d\n",n);    return 0;}


83.题目:求0—7所能组成的奇数个数。

程序分析:这个问题其实是一个排列组合的问题,设这个数为 sun=a1a2a3a4a5a6a7a8,a1-a8 表示这个数的某位的数值,当一个数的最后一位为奇数时,那么这个数一定为奇数,不管前面几位是什么数字。如果最后一位数为偶数,则这个数一定为偶数。a1-a8可以取 0-7 这个八个数字,首位数字不为 0。从该数为一位数到该数为8位数开始统计奇数的个数:1.当只有一位数时也就是该数的最后一位,奇数个数为42.当该数为两位数时,奇数个数为4*7=283.当该数为三位数时,奇数个数为:4*8*7=224...8.当该数为八位数时,奇数个数为:4*8*8*8*8*8*8*7(依次为最后一位到第一位)
#include<stdio.h>int main(int agrc, char*agrv[]){    long sum = 4, s = 4;//sum的初始值为4表示,只有一位数字组成的奇数个数为4int j;    for (j = 2; j <= 8; j++)    {            printf("%d位数为奇数的个数%ld\n", j-1, s);        if (j <= 2)            s *= 7;        else            s *= 8;        sum += s;        }    printf("%d位数为奇数的个数%ld\n", j-1, s);    printf("奇数的总个数为:%ld\n", sum);    // system("pause");    return 0;}


84.题目:一个偶数总能表示为两个素数之和。

程序分析:我去,这是什么题目,要我证明这个问题吗?真不知道怎么证明。那就把一个偶数分解成两个素数吧。
#include<stdio.h>#include<stdlib.h>int Isprimer(unsigned int n);int main(){    unsigned int n,i;    do{        printf("请输入一个偶数:\n");        scanf("%d",&n);    }while(n%2!=0);    for(i=1;i<n;i++)        if(Isprimer(i)&&Isprimer(n-i))            break;    printf("偶数%d可以分解成%d%d两个素数的和\n",n,i,n-i);    return 0;}int Isprimer(unsigned int n){    int i;    if(n<4)return 1;    else if(n%2==0)return 0;    else        for(i=3;i<sqrt(n)+1;i++)            if(n%i==0)return 0;    return 1;}


85.题目:判断一个素数能被几个9整除。

程序分析:丫的!这题目的意思是判断一个素数能整除几个9组成的数吧?我就这么理解吧。素数是不 能被除1和自身之外的数整除的
#include<stdio.h>#include<stdlib.h>int main(){    int p,i;    long int sum=9;    printf("请输入一个素数:\n");    scanf("%d",&p);    for(i=1;;i++)        if(sum%p==0)break;        else sum=sum*10+9;    printf("素数%d能整除%d个9组成的数%ld\n",p,i,sum);    return 0;}


86.题目:两个字符串连接程序 。

#include <stdio.h>#include<stdlib.h>#include<string.h>char* strconnect(char *str1,char *str2);int main(){    char str1[20],str2[20];    char *str;    puts("请输入两个字符串,用回车分开:");    scanf("%s%s", str1, str2);    str=strconnect(str1,str2);    puts("连接后的字符串为:");    puts(str);    return 0;}char* strconnect(char *str1,char *str2){    char*str;    str=(char*)malloc(strlen(str1)+strlen(str2)+1);    str[0]='\0';    strcat(str,str1);    strcat(str,str2);    return str;}


87.题目:回答结果(结构体变量传递)。

#include<stdio.h>struct student{    int x;    char c;} a;int 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';}


88.题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

#include<stdio.h>#include<stdlib.h>int main(){    int n,i,j;    printf("请输入数字:\n");i--;    for(i=0;i<7;i++)    {        scanf("%d",&n);        if(n>50){            printf("请重新输入:\n");i--;        }        else        {            for(j=0;j<n;j++)                printf("*");        }        printf("\n");    }    return 0;}


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

#include <stdio.h>int main(){    int a,i,aa[4],t;    printf("请输入四位数字:");    scanf("%d",&a);    aa[0]=a%10;    aa[1]=a%100/10;    aa[2]=a%1000/100;    aa[3]=a/1000;    for(i=0;i<=3;i++)    {        aa[i]+=5;        aa[i]%=10;    }    for(i=0;i<=3/2;i++)    {        t=aa[i];        aa[i]=aa[3-i];        aa[3-i]=t;    }    printf("加密后的数字:");    for(i=3;i>=0;i--)        printf("%d",aa[i]);    printf("\n");}


90.题目:专升本一题,读结果。

#include<stdio.h>#include<stdlib.h>#define M 5int 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\n",*(a+i));    }}
原创粉丝点击