【C语言】机试100题及代码答案(下)
分析:利用指针输出数组代码:int i;printf("输入5个数字:");for(i = 0;i < 5;i ++) {} // 找最大值 int max , x;//将数组中第一个值作为初始值进行比较 for(i = 1;i < 5;// 最大值与第一个元素进行交换 int temp;// 找最小值 int min , y;//将数组中第一个值作为初始值进行比较 for(i = 1;i < 5
·
51、题目:学习使用按位与 & 。
- 分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 【见0为0】
- 代码:
#include <stdio.h>
int main()
{
int a = 110;
int b = 101;
int c = a & b;
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("a & b = %d \n", c);
return 0;
}
52、题目:学习使用按位或 | 。
- 分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 【见1为1】
- 代码:
#include <stdio.h>
int main()
{
int a = 110;
int b = 100;
int c = a | b;
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("a & b = %d \n", c);
return 0;
}
53、题目:学习使用按位异或 ^ 。
- 分析:0^ 0=0; 0^ 1=1; 1^ 0=1; 1^1=0 【相同为0,不同为1】
- 代码:
#include <stdio.h>
int main()
{
int a = 110;
int b = 100;
int c = a ^ b;
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("a & b = %d \n", c);
return 0;
}
54、题目:学习使用按位取反~。
- 分析:~0=1; ~1=0; ~指对一个数的二进制按位取反
- 代码:
#include <stdio.h>
int main()
{
int a = 5;
int b = ~a;
/*
5 --> 0000 0101
~a --> 1111 1010 符号位是1为负数,计算机里存负数是用补码存的
补码是通过原来的数 取反,+1 来的
要求原码则反过来求 -1,取反
-1 --> 1111 1001
取反,这里的取反是补码,反码的取反,不允许改变符号位的
取反 --> 1000 0110
故b是 1000 0110
那么对应的是 -6
*/
printf("b = %d \n", b);
return 0;
}
56、题目:学习使用%。
- 分析:%后面的东西,决定了变量以什么样的格式输出。
- 代码:
#include <stdio.h>
int main()
{
int a = 16;
printf("%d的十进制是%d\n", a, a);
printf("%d的八进制是%o\n", a, a);
printf("%d的十六进制是%x\n", a, a);
return 0;
}
61、题目:打印出杨辉三角形(要求打印出10行如下图)
- 分析:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 - 杨辉三角性质:每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大。
- 代码:
#include <stdio.h>
int main()
{
int i, j;
int a[10][10] = {};
// 第一列和斜线上赋值均为1
for (i = 0; i < 10; i++) {
for (j = 0; j <= i; j++) {
if (i == j || j == 0) {
a[i][j] = 1;
}
}
}
// 里面的值按照是前一行对应前两个数字和求解
for (i = 1; i < 10; i++) {
for (j = 1; j < i; j++) {
a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
}
}
for (i = 0; i < 10; i++) {
for (j = 0; j <= i; j++) {
printf("%-4d", a[i][j]);
}
printf("\n");
}
return 0;
}
66、题目:输入3个数a,b,c,按大小顺序输出。
- 分析:利用指针方法。
- 代码:
#include <stdio.h>
void swap(int *x, int *y) {
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int main()
{
void swap(int* x, int* y);
int a, b, c;
int* pa, * pb, * pc;
printf("请输入三个数字:");
scanf_s("%d,%d,%d", &a, &b, &c);
pa = &a;
pb = &b;
pc = &c;
if (a > b) {
swap(pa, pb);
}
if (a > c) {
swap(pa, pc);
}
if (b > c) {
swap(pb, pc);
}
printf("顺序排列为:%d,%d,%d", a, b, c);
return 0;
}
67、题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 分析:利用指针输出数组
- 代码:
#include <stdio.h>
#include <math.h>
int main()
{
int a[5] = {};
int i;
printf("输入5个数字:");
for (i = 0; i < 5; i++) {
scanf_s("%d", &a[i]);
}
// 找最大值
int max,x;
max = a[0]; //将数组中第一个值作为初始值进行比较
for (i = 1; i < 5; i++) {
if (a[i] > max) {
max = a[i];
x = i;
}
}
printf("max = %d\n", max);
// 最大值与第一个元素进行交换
int temp;
temp = a[0];
a[0] = a[x];
a[x] = temp;
// 找最小值
int min, y;
min = a[0]; //将数组中第一个值作为初始值进行比较
for (i = 1; i < 5; i++) {
if (a[i] < min) {
min = a[i];
y = i;
}
}
printf("min = %d\n", min);
// 最小值与最后一个元素进行交换
int t;
t = a[4];
a[4] = a[y];
a[y] = t;
// 最后输出结果
printf("输出最后结果:\n");
int* p; // p叫做指针变量;指针是地址,是内存地址。
//p = a; // a地址赋给p
for (p = a; p < &a[5]; p++) { // &a[5]指第5个元素的地址,也可以用p+5来表示 指针移到5号元素
printf("%-4d", *p);
}
return 0;
}
68、题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
- 分析:
- 例:1,2 , 3,4 , 5,6
- 若m=2 则:5,6 ,1 , 2 ,3 ,4
- 代码:
#include <stdio.h>
#include <math.h>
int main()
{
int n, m;
int a[20] = {};
int* p;
int i;
printf("总共整数个数为(n不大于20):");
scanf_s("%d", &n);
printf("输入%d个整数:",n);
for (i = 0; i < n; i++) {
scanf_s("%d", &a[i]);
}
printf("要后移的位置为:(不超过%d大小)",n);
scanf_s("%d", &m);
// 一趟操作:将最后一个元素保存,前面所有元素后移,将最后一个元素放到第一个位置
// 全部循环m次这样的操作
for (i = 0; i < m; i++) {
// 保存要取的m个整数;
p = a + n - 1; //指针指向最后一个元素
int temp;
temp = *p;
// 把前面的所有数依次后移m个位置;
while (p > a) { // 第一个元素放到第二个位置结束,即一旦p指针指向a所在位置停止
*p = *(p - 1); // 前一个元素放到后一个元素位置
p--; // 指针移动
}
// 将最后一个整数放到第一个位置
*p = temp;
}
// 输出数组
for (p = a; p < a + n; p++) { //最后一个元素是 a+n-1
printf("%-4d", *p);
}
return 0;
}
69、题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
- 分析:约瑟夫环
- 代码:
#include <stdio.h>
#include <math.h>
int main()
{
int table[100] = {};
for (int i = 1; i <= 8; i++) {
table[i] = 1;
}
for (int i = 1; i <= 8; i++) {
printf("%-4d", table[i]);
}
printf("\n");
int index; // 当前指向的人
int baoshu; // 报数是1还是2还是3
int count = 8; // 还剩下几个人
// 第一个人
index = 0;
baoshu = 0;
while (count > 0) {
index++;
baoshu++;
while (table[index] == 0) {
index++;
if (index > 8) {
index = 1;
}
}
if (baoshu == 3) {
table[index] = 0;
printf("%-4d", index); // 输出报数顺序
count--;
baoshu = 0;
}
}
return 0;
}
70、题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
- 分析:
- 代码:
#include <stdio.h>
#include <math.h>
//函数
int length(char a[]) {
char* p;
p = a;
int count = 0;
while (*p != '\0') {
count++;
p++;
}
return count;
}
//int length(char *p) {
// int count = 0;
// while (*p != '\0') {
// count++;
// p++;
// }
// return count;
//}
int main()
{
int length(char a[]);
char a[10];
printf("请输入字符串:");
scanf_s("%s", a,20);
int len = length(a);
printf("字符串内容:%s\n", a);
printf("字符串个数:%d", len);
return 0;
}
71、题目:编写input()和output()函数输入,输出5个学生的数据记录。
- 分析:定义学生结构体数据类型,注意scanf_s
详细解释:https://blog.csdn.net/weixin_51520483/article/details/123965668 - 代码:
#include <stdio.h>
#include <math.h>
#include <string.h>
/*
函数:定义、声明、调用
*/
// 定义一个student的数据类型
struct student{
char name[20];
char sex[5];
int age;
};
void input(struct student *stu) {
int i;
printf("请输入5名学生姓名、性别、年龄:\n");
for (i = 0; i < 5; i++) {
// scanf("%s%s%d", stu[i].name,stu[i].sex, &stu[i].age);
scanf_s("%s%s%d", stu[i].name,20, stu[i].sex,20, &stu[i].age);
}
}
void output(struct student* stu) {
for (int i = 0; i < 5; i++) {
printf("姓名:%s,性别:%s,年龄:%d\n",stu[i].name,stu[i].sex,stu[i].age);
}
}
int main(void)
{
struct student stu1[5];
/* char a[20] = "sjncsnc"; //可以这样给字符串数组赋值
char a[20]; a[20] = "sjncsnc"; //但不能先定义再赋值
// strcpy只用于解决字符串数组赋值问题
strcpy(stu1.name, "even");
strcpy(stu1.sex, "女");
stu1.age = 17;
*/
void input(struct student* stu);
input(stu1);
void output(struct student* stu);
output(stu1);
return 0;
}
72、题目:创建一个链表。
- 分析:创建单链表
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
// 定义一个节点node
// typedef重新定义类型名称
typedef struct node{
int data; //数据域
struct node* next; // 指针域
}linklist; //struct node是旧名字,linklist是新的名字
int main(void)
{
int n=0;
printf("元素个数:");
scanf_s("%d", &n);
// 定义一个头指针h和尾指针r并让他们指向头结点
linklist* r;
linklist* h;
h = r = (linklist*)malloc(sizeof(node)); //分配一个node大小的内存给头结点
int i;
linklist* p; // 定义一个指针,指向节点
for (i = 1; i <= n; i++) {
p = (linklist*)malloc(sizeof(node)); //分配一个node大小的内存给节点
printf("输入第%d个元素的值:", i);
scanf_s("%d", &(p->data)); // 给数据域赋值
p->next = NULL; // 新节点的指针域赋为空
r->next = p; // 上一节点指向新节点
r = p; // 尾结点指向新产生的节点(在新节点产生的过程中尾指针一直后移,而头指针不动)
}
linklist* ptr;
for (ptr = h->next; ptr != NULL;ptr=ptr->next) {
printf("%-4d", ptr->data);
}
return 0;
}
73、题目:反向输出一个链表。
- 分析:前插法
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
// 定义一个节点node
// typedef重新定义类型名称
typedef struct node{
int data; //数据域
struct node* next; // 指针域
}linklist; //struct node是旧名字,linklist是新的名字
int main(void)
{
int n=0;
printf("元素个数:");
scanf_s("%d", &n);
// 定义一个头指针h和尾指针r并让他们指向头结点
linklist* r;
linklist* h;
h = r = (linklist*)malloc(sizeof(node)); //分配一个node大小的内存给头结点
int i;
linklist* p; // 定义一个指针,指向节点
r->next = NULL;
for (i = 1; i <= n; i++) {
p = (linklist*)malloc(sizeof(node)); //分配一个node大小的内存给节点
printf("输入第%d个元素的值:", i);
scanf_s("%d", &(p->data)); // 给数据域赋值
p->next = r->next; // 新节点指向尾结点
r->next = p; // 头指针指向新节点
}
linklist* ptr;
for (ptr = h->next; ptr != NULL;ptr=ptr->next) {
printf("%-4d", ptr->data);
}
return 0;
}
75、题目:输入一个整数,并将其反转后输出。
- 分析:利用 % 和 / 求数
- 代码:
#include <stdio.h>
int main(void)
{
int n, reversedNumber = 0, remainder;
printf("输入一个整数: ");
scanf_s("%d", &n);
while (n != 0)
{
/*
例如:234
-> 4 4 23
-> 3 43 2
-> 2 432 0
*/
remainder = n % 10;
reversedNumber = reversedNumber * 10 + remainder;
n /= 10;
}
printf("反转后的整数: %d", reversedNumber);
return 0;
}
76、题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n(利用指针函数)
- 分析:
- 指针函数:本质是一个函数,不过它的返回值是一个指针。void *malloc(size)
- 函数指针:本质是一个指针,该指针的地址指向了一个函数。所以它是指向函数的指针。定义如下: typedef int (*fun_ptr)(int,int)
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 奇数
double fun1(int n) {
double k,sum = 0;
for (int i = 1; i <= n; i += 2) {
k = (double)1 / i;
sum += k;
}
return sum;
}
// 偶数
double fun2(int n) {
double k, sum = 0;
for (int i = 2; i <= n; i += 2) {
k = (double)1 / i;
sum += k;
}
return sum;
}
int main(void)
{
double fun1(int n);
double fun2(int n);
// 函数指针 (*p)->指针名 (int)->传入参数类型
double (*p)(int);
int n = 5;
if (n % 2 == 0) {
// 偶数
// 函数指针,执行哪个调用哪个
p = fun2;
}else {
// 奇数
p = fun1;
}
double result = p(n);
printf("结果为:%f\n", result);
return 0;
}
77、题目:填空练习(指向指针的指针)
-
1.二级指针:指向指针的指针
-
代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a = 100;
int* p1 = &a; //一级指针,指向a的地址
int** p2 = &p1; //二级指针,指针p1的地址
printf("&a = %x\n", &a);
printf("*p2 = %x\n", *p2);
printf("a = %d\n", a);
printf("**p2 = %d\n", **p2);
return 0;
}
- 2.二维数组+指针
- 代码:
#include <stdio.h>
int main(void)
{
int a[3][4] = { {0,1,2,3},{4,5,6,7},{8,9,10,11} };
// 定义整型指针,分别指向4个元素 将二维数组的地址赋给它
int(*p)[4] = a;
//第1个*表示一行数 第2个*表示一行数里的某一个数 后面的+1表示当前行里第几个数
printf("%d\n", *(*(p + 2) + 1));
return 0;
}
- 3.指针的数组:数组中所有的元素,保存的都是指针
- 代码:
#include <stdio.h>
int main(void)
{
int a = 1;
int b = 2;
int c = 3;
int* array[3] = { &a,&b,&c };
int** p = array;
printf("%d,%d,%d\n", *array[0], *array[1], *array[2]);
printf("%d,%d,%d", **(p+0), **(p + 1), **(p + 2));
return 0;
}
- 4.指针+字符串
- 代码:
#include <stdio.h>
int main(void)
{
const char* s1 = "1111111";
const char* s2 = "asdf";
const char* s3 = "zxcv";
// 存储的是三个字符串的首地址,就是字符串名
const char* s[3] = { s1,s2,s3 };
printf("%s\n%s\n%s\n", s[0], s[1], s[2]);
return 0;
}
78、题目:找到年龄最大的人,并输出。
- 分析:
- 代码:
#include <stdio.h>
#include<stdlib.h>
//struct man
//{
// char name[20];
// int age;
//}person1 = {"even",23};
struct man
{
char name[20];
int age;
}
person[3] = { "li",18,"wang",19,"zhang",20,};
int main(void)
{
// 结构类型指针
struct man* p;
p = person; //指针指向定义的person
int m = 0;
struct man* q = NULL;
for (int i = 0; i < 3; i++)
{
// 找最大年龄
if (p->age > m) {
m = p->age; // 保存最大年龄
q = p; // 保存最大年龄的人
}
p++;
}
printf("%s,%d\n", q->name, q->age);
return 0;
}
79、题目:字符串排序。
- 代码:
#include <stdio.h>
#include<string.h>
void swap(char* str1, char* str2) {
char temp[20];
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
}
int main(void)
{
char str1[20] = "";
char str2[20] = "";
char str3[20] = "";
// 第1个参数;把字符串存给谁
// 第2个参数;存储空间有多长
// 第3个参数;标准输出
printf("请输入第1个字符串:\n");
fgets(str1, 20, stdin);
printf("请输入第2个字符串:\n");
fgets(str2, 20, stdin);
printf("请输入第3个字符串:\n");
fgets(str3, 20, stdin);
if (strcmp(str1, str2) > 0) swap(str1, str2);
if (strcmp(str1, str3) > 0) swap(str1, str3);
if (strcmp(str2, str3) > 0) swap(str2, str3);
printf("%s,%s,%s\n", str1, str2, str3);
return 0;
}
80、题目:海滩上有一堆桃子,五只猴子来分。
- 第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
- 第二只猴子把剩下的桃子又平均分成五份,又多了一个,
- 它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
- 问海滩上原来最少有多少个桃子?
- 分析:
- 代码:
#include <stdio.h>
int main(void)
{
int i, m, j, k, count; //j代表第五天的桃子数,m暂存j的值,当前j不符合条件时再从m开始遍历
for (i = 4; i < 10000; i += 4)
{
count = 0;
m = i;
for (k = 0; k < 5; k++) //循环求前四天的桃子数
{
j = i / 4 * 5 + 1;
i = j;
if (j % 4 == 0)
count++;
else
break; //如果中间结果不能整除4,直接跳出循环
}
i = m;
if (count == 4) //此时count为第一天的桃子数
{
printf("%d\n", count);
break;
}
}
return 0;
}
81、题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
- 代码:
#include <stdio.h>
int main(void)
{
int i = 0;
for (i = 10; i < 100; i++) {
if (809 * i >= 1000 && 809 * i < 10000 && 8 * i < 100 && 9 * i >= 100) {
printf("i = %d \t", i);
printf("%d = %d * %d\n", 809 * i, 800 * i, 9 * i);
}
}
return 0;
}
82、题目:八进制转换为十进制。
- 分析:(123) = 1 * 8 ^ 2 + 2 * 8 ^ 1 + 3 * 8 ^0
- 代码:字符0的ASCII码是48,一个数的整型与字符型相差一个0
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char a[20];
int i = 0, n = 0;
printf("请输入一个8进制数:\n");
gets_s(a);
while (a[i] != '\0') {
n = n * 8 + a[i] - '0'; // 不要忘记 -'0' 这样才能转成整数型
i++;
}
printf("它的十进制为:\n%d", n);
return 0;
}
83、题目:求0—7所能组成的奇数个数。
- 分析:这个问题其实是一个排列组合的问题,当一个数的最后一位为奇数时,那么这个数一定为奇数,不管前面几位是什么数字。
- 设这个数为 sun=a1a2a3a4a5a6a7a8,a1-a8 (a1-a8可以取 0-7 这个八个数字,首位数字不为 0)
- 从该数为一位数到该数为8位数开始统计奇数的个数:
- 1.当只有一位数时也就是该数的最后一位,奇数个数为4
- 2.当该数为两位数时,奇数个数为4*7=28
- 3.当该数为三位数时,奇数个数为:487=224
- …8.当该数为八位数时,奇数个数为:4888888*7(依次为最后一位到第一位)
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
int n = 0;
int sum = 4; //sum的初始值为4表示,只有一位数字组成的奇数个数为4个
for (n = 1; n <= 8; n++) {
if (n == 1) { // 1 3 5 7
printf("一共有%d位数,奇数个数为%d\n", n, 4);
}
else if (n == 2) {// 个位4种可能 十位:除去首位不能取0,剩下7个数都可取
sum += 7 * 4;
printf("一共有%d位数,奇数个数为%d\n", n, 7 * 4);
}
else {
sum += 7 * (int)pow(8, n - 2) * 4;
// pow(8,n-2)表示一共有n-2种,每种8个可能性 然后转成int类型
printf("一共有%d位数,奇数个数为%d\n", n, 7 * (int)pow(8, n - 2) * 4);
}
}
printf("奇数总数为:%d\n", sum);
return 0;
}
84、题目:一个偶数总能表示为两个素数之和。
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int isprime(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;
}
int main(void)
{
int n = 0;
do {
printf("请输入一个偶数:");
scanf_s("%d", &n);
} while (n % 2 != 0);
int isprime(int n);
int i;
for (i = 1; i < n; i++) {
if (isprime(i) && isprime(n - i)) {
break;
}
}
printf("偶数%d可以分解成%d和%d两个素数的和\n", n, i, n - i);
return 0;
}
85、题目:判断一个素数能被几个9整除。
- 分析:意思是判断一个素数能整除几个9组成的数,素数是不 能被除1和自身之外的数整除的。
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int isprime(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;
}
int main(void)
{
int isprime(int n);
int n = 0;
do {
printf("请输入一个素数:");
scanf_s("%d", &n);
} while (!isprime(n));
int num = 9;
int i;
for (i = 1;; i++) {
if (num % n == 0) {
break;
}
else {
num = num * 10 + 9;
}
}
printf("素数%d能整除%d个9组成的数%d\n", n,i,num);
return 0;
}
87、题目:回答结果(结构体变量传递)
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
int x;
char c;
}a;
void f(struct student b)
{
b.x = 20;
b.c = 'y';
}
void h(struct student *b)
{
b->x = 30;
b->c = 'w';
}
int main()
{
void f(struct student b);
a.x = 3;
a.c = 'a';
printf("%d,%c\n", a.x, a.c);
// 通过函数改变 变量的值是做不到的,函数是单方向传值
// 改完之后是在新申请的一块空间里进行修改的 没有办法去影响main主空间里的值
f(a);
printf("改变后:\n");
printf("%d,%c\n", a.x, a.c);
// 那么去传变量的地址 传指针
void h(struct student* b);
struct student* p;
p = &a;
h(p);
printf("改变后:\n");
printf("%d,%c\n", a.x, a.c);
return 0;
}
88、题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
- 分析:
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n, i, j;
for (i = 1; i <= 7; i++) {
printf("第%d次输入一个数字(1-50):\n", i);
scanf_s("%d", &n);
for (j = 0; j < n; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
89、题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
- 每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int a, i, s[4], t;
printf("请输入4位数字:");
scanf_s("%d", &a);
s[0] = a % 10;
s[1] = a % 100 / 10;
s[2] = a % 1000 / 100;
s[3] = a / 1000;
for (i = 0; i < 4; i++) {
s[i] += 5;
s[i] %= 10;
}
for (i = 0; i < 4; i++) {
t = s[i];
s[i] = s[3 - i];
s[3 - i] = t;
}
printf("加密后的数字:");
for (i = 0; i < 4; i++) {
printf("%d", s[i]);
}
return 0;
}
90、题目:数组对应位置交换结果
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 5
int main()
{
int a[M] = { 1,2,3,4,5 };
int i, j, t;
for (i = 0; i < M; i++) {
printf("%-4d", *(a + i));
}
printf("\n");
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("%-4d", *(a + i));
}
return 0;
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)