0

从键盘任意输入一个整型表示的月份值,用指针数组编程输出该月份的英文表示,若输入的月份值不在1~12之间,则输出“Illegal month”。

**输入格式要求:"%d" 提示信息:“Input month number:”
**输出格式要求:“month %d is %s\n”
“Illegal month”, “January”, “February”, “March”, “April”, “May”, “June”, “July”, “August”, “September”, “October”, “November”, “December”

程序运行示例1如下:
Input month number:5
month 5 is May

程序运行示例2如下:
Input month number:13
Illegal month

#include<stdio.h>
int main()
{
	int n;
	const char* month[12] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
	printf("Input month number:");
	scanf_s("%d", &n);
	if (n < 1 || n>12)
		printf("Illegal month");
	else
		printf("month %d is %s\n", n, month[n - 1]);   //传递给%s的应该是一个地址,而不是*month[n-1]
}

————————————————
版权声明:本文为CSDN博主「尘封.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_52275610/article/details/113887027

1

利用一个字符数组作函数参数,实现字符串(最大长度为80个字符 )的逆序存放。
要求如下:
(1)在子函数Inverse中实现字符串的逆序存放。函数原型为:
void Inverse(char str[]);
(2)在主函数中
从键盘输入字符串(使用gets函数)
然后,调用Inverse函数,
最后,输出逆序后的字符串。
(3)**输入提示信息:“Input a string:\n”
**输出提示信息:“Inversed results:\n”
**输出格式:"%s\n"
注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用int main和return 0。

#include<stdio.h>
#include<string.h>
#define N 80
void Inverse(char str[]);

main()
{
    char str[N];
    printf("Input a string:\n");
    gets(str);
    Inverse(str);
    printf("Inversed results:\n");
    printf("%s\n",str);
}

void Inverse(char str[])
{
    int a = strlen(str), i;
    char temp;
    for(i = 0;i < a/2; i++)
    {
        temp = str[i];
        str[i] = str[a - 1 - i];
        str[a - 1 - i] = temp;
    }
}

————————————————
版权声明:本文为CSDN博主「星海燚燚」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45700528/article/details/105185514

2

任意输入英文的星期几,通过查找星期表,输出其对应的数字,
若查到表尾,仍未找到,则输出错误提示信息。

**输入格式要求:"%s" 提示信息:“Please enter a string:\n”
**输出格式要求:"%s is %d\n" “Not found!\n”
查找表中信息:
“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”

程序运行示例1如下:
Please enter a string:
Monday
Monday is 1

程序运行示例2如下:
Monkey
Not found!

#include<stdio.h>
#include<string.h>
int main()
{
    int i, count = 0;
    const char* Weekday[8] = { 0,"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday","Sunday" };
    char day_name[30];
    printf("Please enter a string:\n");
    scanf("%s", day_name);
    for (i = 1; i < 8; i++)
    {
        if (!(strcmp(day_name, Weekday[i])))     //strcmp为字符串比较函数,传递两个数组名(地址)过去比较
        {
            count = i;     
            break;
        }
    }
    if (i == count)           //验证是否找到了输入的该星期名
        printf("%s is %d\n", day_name, count);
    else
        printf("Not found!\n");
}

————————————————
版权声明:本文为CSDN博主「尘封.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_52275610/article/details/113906516

3

原教材例题对奥运会参赛国国名按字典排序
例10.4(C语言程序设计第四版)P264

#include<string.h>
#define MAXLEN 10
#define N 150
void SortString(char str[][MAXLEN],int n);
int main()
{
    int i,n;
    char name[N][MAXLEN];
    printf("How many countries?");
    scanf("%d",&n);
    getchar();
    printf("Input their names:\n");
    for(i=0;i<n;i++)
    {
        gets(name[i]);
    }
    SortString(name,n);
    printf("Sorted results:\n");
    for(i=0;i<n;i++)
    {
        puts(name[i]);
    }
    return 0;
}
//函数功能:用交换法实现字符串按字典顺序排序
void SortString(char str[][MAXLEN],int n)
{
    int i,j;
    char temp[MAXLEN];
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
            {
                if(strcmp(str[j],str[i])<0)
                {

                    strcpy(temp,str[i]);
                    strcpy(str[i],str[j]);
                    strcpy(str[j],temp);
                }
            }
    }
}

部分字符串处理函数的设计

复制


//向函数传递字符串

void MyStrcpy(char dstStr[],char srcStr[])
{
    int i=0;
    while(srcStr[i]!='\0')
    {
        dstStr[i]=srcStr[i];
        i++;
    }
    dstStr[i]='\0';//在字符串dstStr末尾添上结束标志
}

//使用指针
void MyStrcpy(char *dstStr,char *srcStr)
{
    while(*srcStr!='\0')
    {
        *dstStr=srcStr;
        srcStr++;
        dstStr++;
    }
    *dstStr='\0';
}

计算字符串长度

int myStrlen(char *str)
{
    int i=0;
    while(*str!='\0')
    {
            i++;
            str++;
    }
    return i;
}

字符串连接

char *MyStrcat(char *dstStr,char *srcStr)
{
    char *pStr=dstStr;//保存字符串dstStr的首地址
    //将指针移到字符串dstStr的末尾
    while(*dstStr!='\0')
    {
        dstStr++;
    }
    //将字符串srcStr复制到字符串dstStr的后面
    for(;*srcStr!='\0';dstStr++,srcStr++)
    {
        *dstStr=*srcStr;
    }
    *dstStr='\0';
    return pStr;//返回连接后的字符串的首地址
}
posted on 2022-11-21 20:49  20221417wzy  阅读(108)  评论(0编辑  收藏  举报