> 文档中心 > 2022-03-02----C编程题

2022-03-02----C编程题

文章目录

  • C编程题
    • 第1题:功能: 输入两个整数, 求他们的按位与。
    • 第2题:功能: 有 n 个整数, 使其前面各数顺序向后移 m 个位置, 最后 m 个数变成最前面的 m 个数
    • 第3题:功能: seek()函数: 判断是否有不合格成绩;形参: 1 个, 指向由 3 个 int 型元素组成的 1 维数组的行指针变量返回值:(1)有不合格成绩, 则返回指向本行首列的一个(列)指针;(2)没有有不合格成绩, 返回值为指向下一行的一个(列)指针
    • 第4题:功能: 输入一个学生的生日(年: y0、 月: m0、 日: d0), 并输入当前日期(年: y1、 月: m1、 日: d1)。 求出该学生的年龄(实足年龄)
    • 第5题:功能: 编程求某年第 n 天的日期。 用数组表示月天数。
    • 第6题:功能: 算式: ? 2 * 7? = 3848 中缺少一个十位数和一个个位数。 编程求出使该算式成立时的这两个数, 并输出正确的算式。
    • 功能: 编程求任意给两个日期(年 月 日)相差的天数。

C编程题

第1题:功能: 输入两个整数, 求他们的按位与。

//功能: 输入两个整数, 求他们的按位与。void main(){int x, y, z = 0, a, b, k = 1;scanf("%d%d", &x, &y);while (x>0 && y>0){a = x % 2;/***********SPACE***********/x = x/2;b = y % 2;y = y / 2;/***********SPACE***********/z = z + a*b*k;k = k * 2;} printf("z=%d\n", z);}

第2题:功能: 有 n 个整数, 使其前面各数顺序向后移 m 个位置, 最后 m 个数变成最前面的 m 个数

int main(){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; i++)scanf("%d", &number[i]);/***********SPACE***********/move(number,n,m);for (i = 0; i < n - 1; i++)printf("%d,", number[i]);printf("%d", number[n - 1]);}  move(array,n,m)int n, m, array[20];{int *p, array_end;/***********SPACE***********/array_end = *(array+n-1);//最后一个元素放到array_endfor (p = array + n - 1; p>array; p--)/***********SPACE***********/*p = *(p-1);//倒数第2个放到最后一个位置,一次向后放*array = array_end;//循环完之后把最后一个元素放到第一个位置m--;//右移次数减1if (m>0) move(array, n, m);//再次调用}

第3题:功能: seek()函数: 判断是否有不合格成绩;形参: 1 个, 指向由 3 个 int 型元素组成的 1 维数组的行指针变量返回值:(1)有不合格成绩, 则返回指向本行首列的一个(列)指针;(2)没有有不合格成绩, 返回值为指向下一行的一个(列)指针

//功能: seek()函数: 判断是否有不合格成绩; 形参: 1 个, 指//向由 3 个 int 型元素组成的 1 维数组的行指针变量返回值://(1)有不合格成绩, 则返回指向本行首列的一个(列)指针;//(2)没有有不合格成绩, 返回值为指向下一行的一个//(列)指针int *seek(int(*pnt_row)[3]){int i = 0, *pnt_col;/***********SPACE***********/ pnt_col= *(pnt_row + 1);//+1指向第2个一维数组解引用降一级变为指向其一维数组的首元素的指针for (; i<3; i++)if (*(*pnt_row + i)<60)//判断这一行有没有不及格的{pnt_col = *pnt_row;break; /*退出循环*/} return(pnt_col);}int main(){static int grade[3][3] = { { 55, 65, 75 }, { 65, 75, 85 }, { 75, 80, 90 } };int i, j, *pointer;for (i = 0; i < 3; i++){/***********SPACE***********/pointer = seek(grade[i]);//每次传的是二维数组的元素一维数组的地址if (pointer == *(grade + i))//若返回的该行首列的地址说明没有不及格的{printf("No.%d grade list: ", i + 1);for (j = 0; j < 3; j++)/***********SPACE***********/printf("%d ", *(pointer+j));printf("\n");}}}

第4题:功能: 输入一个学生的生日(年: y0、 月: m0、 日: d0), 并输入当前日期(年: y1、 月: m1、 日: d1)。 求出该学生的年龄(实足年龄)

#include main(){int age, y0, y1, m0, m1, d0, d1;printf("输入生日日期(年,月,日) ");/***********SPACE***********/scanf("%d%d%d", &y0, &m0, &d0);printf("输入当前日期(年,月,日)");scanf("%d%d%d", &y1, &m1, &d1);age = y1 - y0;/***********SPACE***********/if (m0>m1)age--;/***********SPACE***********/if ((m0==m1) && (d0>d1))age--;printf("age=%3d", age);}

第5题:功能: 编程求某年第 n 天的日期。 用数组表示月天数。

//功能: 编程求某年第 n 天的日期。 用数组表示月天数。#includeint main(){int y,f, n;int a[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };printf("y,n=");scanf("%d%d", &y, &n);/***********SPACE***********/f = y % 4 == 0 && y % 100 != 0 || y % 400 == 0;a[1]+=f;if (n<1 || n>365 + f){printf("error!\n"); exit(0);} int i = 0;while (n > 0){n -= a[i];i++;} if (n <= 0){i--;//天数循环中多加了一次n += a[i];//再把日前天数加回来}printf("年=%d,月份=%d,日期=%d\n", y, i+1, n);}

第6题:功能: 算式: ? 2 * 7? = 3848 中缺少一个十位数和一个个位数。 编程求出使该算式成立时的这两个数, 并输出正确的算式。

int main(){int x, y;/***********SPACE***********/for (x = 1; x < 10; x++)//十位不能有10/***********SPACE***********/for (y = 0; y < 10; y++)//各位可以有0/***********SPACE***********/if ((10 * x + 2)*(70 + y) == 3848){/***********SPACE***********/printf("%d*%d=3848\n", x*10+2, 70+y);exit(0);}}

功能: 编程求任意给两个日期(年 月 日)相差的天数。

#include int date(int n, int m1, int d1, int m, int m2, int d2){   //n  起始年份  m  末年份int i, j, k, t1, t2, q, y, sum = 0;int a[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };for (i = n; i <= m; i++){if (i == n)//起始年是月份从输入的m1月开始t1 = m1;else t1 = 1;//其他的起始月份从1月开始if (i == m)//末尾年月份从m2结束t2 = m2;//否则再12结束else t2 = 12;//起始月份到末月份for (j = t1; j <= t2; j++){    //判断当前年是否是闰年if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)//判断该年是否是闰年a[2] = 29;else a[2] = 28;if (i == n&&j == m1)//起始年并且是起始月q从d1天开始q = d1;else q = 1;if (i == m&&j == m2)//末尾年并且是末尾月y从d2天结束y = d2;else y = a[j];//否则就是本月的最后一天for (k = q; k <= y; k++){  //起始日+到末尾日sum++;}}}printf("%d", sum - 1);}int main(){int n, m, m1, m2, d1, d2;int sum;scanf("%d %d %d", &n, &m1, &d1);//起始年月日 scanf("%d %d %d", &m, &m2, &d2);//最终年月日 date(n, m1, d1, m, m2, d2);return 0;}