个人学习编程(3-13) 刷题2
用malloc方法、realloc:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char *p;
p = (char *)malloc(sizeof(char)*20);
strcpy(p,"hello");
printf("%s sizeof(p) = %zd\n",p,sizeof(p));
char *q;
q = (char *)realloc(p,sizeof(char)*20);
strcat(q," Rsecret2");
printf("%s sizeof(q) %zd\n",q,sizeof(q));
free(p); // 先释放原内存
free(q); // 再释放新内存
return 0;
}
测量字符串长度
1、数组
2、指针
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int lenofString(char a[]){
char *p;
p = a;
int count=0;
while (*p != '\0'){
count++;
p++;
}
return 0;
}
int lenofString2(char *p){
int count = 0;
while (*p != '\0'){
count++;
p++;
}
return count;
}
int main(){
int lenofString(char a[]);
int lenofString2(char *p);
//2种方法
char a[]= "Rsecret hello";
char *p = "hello Rsecret2";
char *p;
p = a;
printf("lenofString测的字符串长度为:%d",lenofString(a));
printf("lenofString2测的字符串长度为:%d",lenofString(p));
return 0;
}
字符型减去整数 字符0的ascii是48
字符串0的ascii值为: 48
字符串9减去int类型9的值为: 48
--------------------------------
Process exited with return value 0
Press any key to continue . . .
#include <stdio.h>
int main(){
char c='9';
int cc = 9;
char k = '0';
printf("字符串0的ascii值为: %d\n",k);
printf("字符串9减去int类型9的值为: %d",c-cc);
return 0;
}
判断一个奇数能有几个素数表示
for (a = 1; a < n; a++) {
if (prime(a) && prime(n - a)) {
printf("%d 可被 %d 和 %d 表示\n", n, a, n - a);
break; // 找到就退出
}
}
#include <stdio.h>
#include <math.h>
// 判断是否为素数的函数
int prime(int n) {
int i;
if (n < 2) {
return 0; // 小于2的数字不是素数
}
if (n == 2) {
return 1; // 2 是素数
}
if (n % 2 == 0) {
return 0; // 偶数不是素数
}
for (i = 3; i <= sqrt(n); i += 2) {
if (n % i == 0) {
return 0; // 如果能被 i 整除,则 n 不是素数
}
}
return 1; // 如果没有找到因数,则 n 是素数
}
int main() {
int n;
// 输入一个偶数
scanf("%d", &n);
while (n % 2 != 0) {
printf("请输入一个偶数:");
scanf("%d", &n);
}
printf("n = %d 是偶数\n", n);
// 寻找两个素数之和为 n
int a;
for (a = 1; a < n; a++) {
if (prime(a) && prime(n - a)) {
printf("%d 可被 %d 和 %d 表示\n", n, a, n - a);
break; // 找到就退出
}
}
return 0;
}