本文目录一览:
- [求大神们用C语言输出: 11111 12221 11311 12221 11111](#求大神们用C语言输出: 11111 12221 11311 12221 11111)
- C语言中,一个指针占用的空间是多大?和指针类型有关系吗?
- C语言编写超级素数
求大神们用C语言输出: 11111 12221 11311 12221 11111
#include stdio.h
int main(void)
{
printf("11111 12221 11311 12221 11111\n");
}
C语言中,一个指针占用的空间是多大?和指针类型有关系吗?
指针和其指向的数据类型有关系,你可以用 sizeof()
做测试:
printf("the size of char is %d\n", sizeof(int*));
printf("the size of char is %d\n", sizeof(char*));
另外,指向结构体的指针就要看具体情况了,C语言还有所谓的“对齐机制”,就是结构体里的单元,所分配的空间实际上要参照结构体里“体积”最大的那个单元。就是说,比如一个char和一个int,char要向int看齐,一个char和一个double,char要向double看齐。关键就在于凑整数,凑成最大变量大小的倍数。当然,如果结构体里只有char型的变量或是数组,就不存在一定要凑数的问题了。
C语言编写超级素数
超级素数是指从个位起删除0位、1位、2位……直到只剩最后1位都是素数的十进制正整数。可以自定义一个素数判断函数,对某一正整数n及从个位起每删除1位的新数逐一进行判断,都是素数的则是题解。以下代码先要求输入正整数n,输出2~n之间的所有超级素数:
#include "stdio.h"
int prime(int n) { // 判断素数,素数返回0,否则返回1
int i;
if (n < 2 || !(n & 1) || n % 2)
return 1;
for (i = 3; i * i <= n; i += 2)
if (!(n % i))
return 1;
return 0;
}
int main(int argc, char *argv[]) {
int n, i, t;
printf("Input n (int n > 1)...\nn=");
if (scanf("%d", &n) != 1 || n < 2) {
printf("Input error, exit...\n");
return 0;
}
for (i = 2; i <= n; i++) {
for (t = i; t; t /= 10) // 从低位删除0位,1位...直到只剩1位都是素数的为超级素数
if (prime(t))
break;
if (!t)
printf("%d ", i);
}
printf("\n");
return 0;
}
运行样例如下: