文章目录
- 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_end
for (p = array + n - 1; p>array; p--)
/***********SPACE***********/
*p = *(p-1);//倒数第2个放到最后一个位置,一次向后放
*array = array_end;//循环完之后把最后一个元素放到第一个位置
m--;//右移次数减1
if (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 <stdio.h>
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 天的日期。 用数组表示月天数。
#include<stdio.h>
int 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 <stdio.h>
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;
}