#include<stdio.h>voidselect_day(int year, int day, int * pmonth, int * pdata);
int main(void){
int year, day, month, data;printf("input year and day:");scanf_s("%d %d",&year,&day);select_day(year, day,&month,&data);printf("the day is %d-%d-%d.\n", year, month, data);return0;}voidselect_day(int year, int day, int * pmonth, int * pdata){
int flag,i;
int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31},};
flag =(year %4==0&& year %100!=0)||(year %400==0);for(i =1; day > a[flag][i]; i++){
day = day - a[flag][i];}*pmonth = i;*pdata = day;}
2. 加密通话(每个字符后移一位,z变为a)
voidencrypt(char *input);
int main(void){
char inp[100];printf("please input the word:");gets(inp);encrypt(inp);printf("the encrypt word is:%s\n",inp);return0;}voidencrypt(char *input){
int i;//使用指针排序/*for (; *input != 0; *input++)
{
if (*input == 'z')
*input = 'a';
else
*input =*input+1;
}*///数组排序for(i =0; input[i]!='\0'; i++){if(input[i]=='z')
input[i]='a';else
input[i]= input[i]+1;}}
3. 定义结构体,输入n个学生的姓名、学号、三门课的成绩,输出平均值最大的学生
struct student {
char name[20];
int id;
int chinese, english, math;
double average;};
int main(void){
int i, n;
struct student s1, max;//定义结构体printf("please input n:");scanf_s("%d",&n);printf("please input the student's message:name id chinese english math:\n");for(i =1; i <=n; i++){printf("no.%d ", i);scanf_s("%s %d %d %d %d", s1.name,20,&s1.id,&s1.chinese,&s1.english,&s1.math);
s1.average =((double)(s1.chinese + s1.english + s1.math))/3.0;if(i ==1)
max = s1;if(max.average<s1.average){
max = s1;}}printf("the best student is %d %s,the average is %lf.\n",max.id,max.name,max.average);return0;}
4. 学生成绩排序
struct student {
char name[20];
int id;
int chinese, english, math;
double average;};
int main(void){
int i, n,j,point;
struct student s1[50],max;//定义结构体printf("please input n:");scanf_s("%d",&n);printf("please input the student's message:name id chinese english math:\n");for(i =0; i < n; i++){printf("no.%d ", i);scanf_s("%s %d %d %d %d", s1[i].name,20,&s1[i].id,&s1[i].chinese,&s1[i].english,&s1[i].math);
s1[i].average =((double)s1[i].chinese +(double)s1[i].english +(double)s1[i].math)/3.0;}for(i =0; i <n-1; i++){
point = i;for(j = i+1; j < n; j++){if(s1[i].average < s1[j].average){
point = j;}}
max = s1[point];
s1[point]= s1[i];
s1[i]= max;}for(i =0; i < n; i++){printf("the no.%d is %s %d,the grade is %lf.\n", i+1, s1[i].name,s1[i].id, s1[i].average);}return0;}
5. 输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。
#include<stdio.h>
#include<string.h>
int main(void){
char chr[200];
int temp,i,j,n=100;//printf("please input 4 char:");gets(chr);for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(chr[j]<chr[i]){
temp=chr[i];
chr[i]=chr[j];
chr[j]=temp;}}}puts(chr);return(0);}
#include<stdio.h>
int main(void){
int n, flag =0;scanf("%d",&n);for(; n !=1;){if(n ==0){printf(0);break;}if(n %2){//奇数
n =(n *3+1)/2;}else//偶数{
n = n /2;}
flag++;}printf("%d", flag);}
自测练习1. 指针练习,输入年份和天数,得到对应的具体日期1. 指针练习,输入年份和天数,得到对应的具体日期#include<stdio.h>void select_day(int year, int day, int * pmonth, int * pdata);int main(void){ int year, day, month, data; printf("input year and day:"); scanf_s("%d %d", &ye