expr 2.1#include#include int main(){ int i,n; scanf("%d",&n); for(i = 2; i<=n;i++){ while(n!=0){ if(n%i==0){ printf("%d*",i); n /= i; } else{ break; } } } putchar('b'); return 0; }
在这个代码之中,因为有for循环对于i变量进行着范围的约束,所以说只要是n!=0就可以了,可以不用考虑最后n=1,i一直累加进入死循环的情况。(可以与实验六之中的my_fun()函数进行比较)
因为在实验六之中,质因数的分解是在同一个while循环中完成的,所以说只用了一层的循环。而且并没有对i进行范围的限制,所以导致如果在“1”的情况之下不break会出现死循环。
void fun(int m){
int i = 2;
printf("%d = 1",m);
while(m>1){ //在这里对1进行约束,防止出现1一直除不尽,所以一直i++的情况。
if(m%i==0){
m/=i;
printf("*%d",i);
}
else i++;
}
}
expr 2.2
#include#include int datoi(char str[]){ int value = 0, i = 0; while(str[i]!=' '){ value = value*10 + str[i] - '0'; i++; } return value; } int main(){ char *str = "9999"; printf("%d",datoi(str)*10+9); return 0; }
注意,在做这个实验的时候不可以
#include
因为atoi这个函数在stdlib.h这个库之中已经存在了,相当于是对于这个函数进行复写,所以会导致报错。
expr 2.3#includevoid maxval(int (*num)[4]){ int i, j, max, row =0, col = 0; max = num[0][0]; for(i=0; i<4; i++) for(j=0; j<4;j++) if(max expr 2.9 注意插入排序!!
#include#include void insert(float* num,float new){ int i = 11; num[12] = new; while( i>=0 && num[i] expr 2.10 #include#include int mycmp(char *p1, char* p2){ while(*p1 && *p2 && *p1 == *p2){ p1++, p2++; } return *p1 - *p2; } int main(){ char *p1, *p2; p1 = (char*)malloc(sizeof(char)*20); p2 = (char*)malloc(sizeof(char)*20); gets(p1); gets(p2); printf("%d",mycmp(p1,p2)); return 0; } Equivalent Solution:
int mycmp(char *p1, char* p2){ while(*p1 && *p2 && *p1++ == *p2++); return *(--p1) - *(--p2); }expr 3.3#include#include void ss(char*s, char t){ while(*s){ if(*s==t) *s = t -'a' +'A'; s++; } } void main(void){ char str1[100] = "abcddfefdbd", c = 'd'; ss(str1,c); puts(str1); } The code in Line 6 search for a particular character that is equal to the input char t, and return a Capitalized character in the string.
expr 3.6#include#include void sort(int a[], int n){ int i,j,t; for(i = 0; i 上述的代码的核心原理是,以输入的int型指针a为起点,以a+n-1指针为终点,进行降序的排序。
从a[3]开始,长度为5的子列进行一个降序的排序。
expr 3.7#includeexpr 5.2#include #include void sort(char **str, int n){ char * tmp; int i, j; for(i=0; i 0){ tmp = str[j], str[j] = str[j+1], str[j+1] = tmp; } } int main(){ char **ps, *str[3] ={"BOOK", "COMPUTER", "CHINA"}; int i; ps = str; sort(str,3); for(i=0;i<3;i++) puts(str[i]); return 0; } #include#include int prime(int x){ int flag = x; for(int i = 2;i expr 5.10 #include#include int sort(short *num, int n){ int p; short temp; for(int i=0;i



