1.編寫一函數(shù),實(shí)現(xiàn)兩個(gè)字符串的比較。即自己寫一個(gè)strcmp函數(shù),函數(shù)原型為strcmp(char *p1, char *p2)
int main() {
char *month_name[13] = {"illegal month", "January","February","March","April","May","June","July","August","September","October","November","December"};
int n;
printf("input month:\n");
scanf("%d",&n);
if ((n <= 12) && (n >= 1))
printf("It is %s.\n",*(month_name + n));
else
printf("It is wrong. \n");
return 0;
}
運(yùn)行結(jié)果:c1.png
2.用指向指針的方法對(duì)n個(gè)整數(shù)排序并輸出。要求將排序單獨(dú)寫成一個(gè)函數(shù)。n個(gè)整數(shù)在主函數(shù)中輸入,最后在主函數(shù)中輸出。
int main() {
void sort(int **p, int n);
int i, n, data[20], **p, *pstr[20];
printf("input n:\n");
scanf("%d",&n);
for (i = 0; i < n; i++)
pstr[i] = &data[i]; //將第i個(gè)整數(shù)的地址賦予指針數(shù)組pstr的第i個(gè)元素
printf("input %d integer numbers :",n);
for (i = 0; i < n; i++)
scanf("%d",pstr[i]);
p = pstr;
sort(p, n);
printf("Noew,the sequence is:\n");
for (i = 0; i < n; i++)
printf("%d",*pstr[i]);
printf("\n");
return 0;
}
void sort(int **p, int n) {
int i, j, *temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (**(p + 1) > **(p + j)) { //比較后交換整數(shù)地址
temp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = temp;
}
}
}
}
運(yùn)行結(jié)果:c2.png
3.定義一個(gè)結(jié)構(gòu)體變量(包括年、月、日)。計(jì)算該日在本年中是第幾天,注意閏年問題
- 解法一:
struct {
int year;
int month;
int day; //結(jié)構(gòu)體變量date中的成員對(duì)應(yīng)于年、月、日
}date;
int main() {
int days = 0; //days為天數(shù)
printf("input year, month, day:");
scanf("%d,%d,%d",&date.year,&date.month,&date.day);
switch (date.month) {
case 1:
days = date.day;
break;
case 2:
days = date.day + 31;
break;
case 3:
days = date.day + 59;
break;
case 4:
days = date.day + 90;
break;
case 5:
days = date.day + 120;
break;
case 6:
days = date.day + 151;
break;
case 7:
days = date.day + 181;
break;
case 8:
days = date.day + 212;
break;
case 9:
days = date.day + 243;
break;
case 10:
days = date.day + 273;
break;
case 12:
days = date.day + 304;
break;
case 13:
days = date.day + 334;
break;
}
if (((date.year%4 == 0 && date.year%100 != 0) || date.year % 4 == 0) && date.month >= 3) {
days+=1;
}
printf("%d/%d is the %dth day in %d.\n",date.month,date.day,days,date.year);
return 0;
}
運(yùn)行結(jié)果:c3.png
- 解法二:
struct {
int year;
int month;
int day; //結(jié)構(gòu)體變量date中的成員對(duì)應(yīng)于年、月、日
}date;
int main() {
int i, days;
int day_tab[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("input year, month,day:");
scanf("%d,%d,%d",&date.year,&date.month,&date.day);
days = 0;
for (i = 1; i < date.month; i++)
days = days + day_tab[i];
days = days + date.day;
if ((date.year % 4 == 0) && (date.year % 100 != 0 || date.year % 400 == 0) && date.month >= 3)
days = days + 1;
printf("%d%d is the %dth day in %d.\n",date.month,date.day,days,date.year);
return 0;
}
運(yùn)行結(jié)果:c3_2.png