#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
#include <string.h>
int i; //-1
int main()
{
i--;
//sizeof这个操作符,算出的结果的类型是unsigned int
//有符号整形和有符号整形比大小的时候,会有符号整形改成无符号整形,再进行比较
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
求由a组成的前n项之和 - 不考虑溢出,其中a是一个数字
int main()
{
int n = 0;
int a = 0;
scanf("%d %d", &a,&n);
int i = 0;
int sum = 0;
int ret = 0;
for (i = 0;i < n;i++)
{
//算出一项
ret = ret * 10 + a;
sum = sum + ret;
}
printf("sum = %d\n", sum); //24690
return 0;
}
写一个函数打印arr数组的内容,不使用数组下标,使用指针
arr是一个整形的一维数组
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int* p = arr;
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
for (i = 0;i < sz;i++)
{
printf("%d ", *(p + i));
}
return 0 ;
}
求出0 - 100000之间的所有"水仙花数"并输出
"水仙花数"是指一个n位数,其各位数字的n次方之和正好等于该数本身
如:153= 1 ^ 3 + 5 ^ 3 + 3 ^ 3
int main()
{
int i = 0;
for (i = 0;i <= 100000;i++)
{
//判断i是否为自幂数
//1.计算i的位数 - n
int n = 1;
int tmp = i;
while (tmp / 10)
{
n++;
tmp = tmp / 10;
}
//2.计算i的每一位的n次方之和
tmp = i;
int sum = 0;
while (tmp)
{
//pow是用来求次方数,需要引用头文件math.h
sum += pow(tmp % 10, n); //(tmp%10)^n
tmp = tmp / 10;
}
//3.判断
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}
输出结果?
int main()
{
unsigned long pulArray[] = { 6,7,8,9,10 };
unsigned long* pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3;
printf("%d , %d\n", *pulPtr, *(pulPtr + 3)); // 6 12
return 0;
}
输出结果?
struct stu
{
int num;
char name[10];
int age;
};
void fun(struct stu* p)
{
printf("%s\n", (*p).name);
return;
}
int main()
{
struct stu students[3] = { {9810,"zhang",20},
{9802,"wang",19},
{9803,"zhao",18}
};
fun(students + 1); //wang
return 0;
}
下面关于指针运算说法正确的是: ( C )
A:整形指针+1,向后偏移一个字节. //4个字节
B:指针-指针得到的是指针和指针之间的字节个数 //指针之间的元素
C:整形指针解引用操作访问4个字节
D:指针不能比大小 //error
输出a的数据,不能填入的内容是: ( B )
struct S
{
int a;
int b;
};
int main()
{
struct S a, * p = &a;
a.a = 99;
printf("%d\n", ___________);
return 0;
}
A: a.a
B: *p.a //.的优先级比*高
C: p->a
D: (*p).a
写一个函数,可以逆序字符串的内容
void reverse(char* str)
{
assert(str != NULL);
int len = strlen(str);
char* left = str;
char* right = str + len - 1;
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
char arr[] = "abcdef"; //fedcba
reverse(arr);
printf("%s\n",arr);
return 0;
}