天天看点

C语言练习——Day1056、字符串排序。57、八进制转换为十进制。58、填空练习(指向指针的指针)。59、计算字符串中子串出现的次数。60、时间函数

题目56-60

  • 56、字符串排序。
  • 57、八进制转换为十进制。
  • 58、填空练习(指向指针的指针)。
  • 59、计算字符串中子串出现的次数。
  • 60、时间函数

56、字符串排序。

#include "stdio.h"
#include "string.h"

int main(){
    char a[20][20]={"china","korean","japan"};
    for (int i=0; i<3-1; i++) {
        for (int j=0; j<3-1-i; j++) {
            if (strcmp(a[j], a[j+1])>0) {
                char temp[20];
                strcpy(temp,a[j]);
                strcpy(a[j], a[j+1]);
                strcpy(a[j+1],temp);
            }
        }
    }
    for (int i=0; i<3; i++) {
        printf("%s\n",a[i]);
    }
}
           

利用指针:

#include "stdio.h"
#include "string.h"
int main(){
    char *str1[20],*str2[20],*str3[20];
    char swap();
    printf("please input three strings\n");
    scanf("%s",str1);
    scanf("%s",str2);
    scanf("%s",str3);
    if(strcmp(str1,str2)>0) swap(str1,str2);
    if(strcmp(str1,str3)>0) swap(str1,str3);
    if(strcmp(str2,str3)>0) swap(str2,str3);
    printf("after being sorted\n");
    printf("%s\n%s\n%s\n",str1,str2,str3);
}
char swap(char *p1,char*p2){
    char *p[20];
    strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}
           

运行结果:

C语言练习——Day1056、字符串排序。57、八进制转换为十进制。58、填空练习(指向指针的指针)。59、计算字符串中子串出现的次数。60、时间函数

57、八进制转换为十进制。

#include "stdio.h"
#include "string.h"

int main(){
    char *p,s[6];int n;
    gets(s);
    p=s;   
    n=0;
    while(*(p)!='\0'){
        n=n*8+*p-'0';
        p++;
    }
    printf("%d",n);
}
           

运行结果:

C语言练习——Day1056、字符串排序。57、八进制转换为十进制。58、填空练习(指向指针的指针)。59、计算字符串中子串出现的次数。60、时间函数

58、填空练习(指向指针的指针)。

int main()
{
	char* s[] = { "man","woman","girl","boy","sister" };
	char** q;
	int k;
	for (k = 0;k < 5;k++)
	{
		q=&s[k];/*这里填写什么语句*/
		printf("%s\n", *q);
	}
}
           

答案: q=&s[k];

运行结果:

C语言练习——Day1056、字符串排序。57、八进制转换为十进制。58、填空练习(指向指针的指针)。59、计算字符串中子串出现的次数。60、时间函数

59、计算字符串中子串出现的次数。

程序分析:字符串c1,c2,c1逐字符与c2第一个字符比较,判断是否相符,如果相同再比较其他字符直到c2中的字符全部比较完毕

#include<stdio.h>
int main()
{
	char c1[]="qwer123qwe45tyu";
    char c2[]="qwe";
    int i=0,number=0;
    while (c1[i]!='\0') {
        int j=0,flag=1;
        if (c1[i]==c2[j]) {
            while (c2[j]!='\0') {
                //printf("%c %c\n",c1[i],c2[j]);
                if (c1[i]==c2[j]) {
                    i++;j++;
                }
                else {
                    flag=0;
                    break;
                }
            }
            if (flag) {
                number++;
            }
        }
        i++;
        
    }
   printf("c1中含有%d个c2。",number);
}
           

利用指针:

#include<stdio.h>
int main()
{
	char c1[]="qwer123qwe45tyu";char c2[]="qwe";
    char *p1,*p2;p1=c1;
    int number=0;
    while (*p1!='\0') {
        p2=c2;
        int flag=1;
        if (*p1==*p2) {
            while (*p2!='\0') {
                if (*p1==*p2) {
                    p1++;p2++;
                }
                else {
                    flag=0;
                    break;
                }
            }
            if (flag) {
                number++;
            }
        }
        p1++;
        
    }
   printf("c1中含有%d个c2。",number);
}
           

运行结果:

C语言练习——Day1056、字符串排序。57、八进制转换为十进制。58、填空练习(指向指针的指针)。59、计算字符串中子串出现的次数。60、时间函数

60、时间函数

#include <stdio.h>
#include <time.h>
 
int main ()
{
    time_t rawtime;
    struct tm * timeinfo;
    // 获取系统当前时间
    time ( &rawtime );
    //localtime()是 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间,返回指针
    timeinfo = localtime ( &rawtime );
    // asctime函数把储存的时间转换为字符串
    printf ( "当前本地时间为: %s", asctime (timeinfo) );
    // gmtime函数转换后的时间没有经过时区变换,是UTC时间,北京时间比UTC时间快了8小时 
    printf("当前本地时间为: %s",asctime(gmtime(&rawtime))); 
    
    
    return 0;
}
           

运行结果:

C语言练习——Day1056、字符串排序。57、八进制转换为十进制。58、填空练习(指向指针的指针)。59、计算字符串中子串出现的次数。60、时间函数

继续阅读