第四周第一天:C基础

1.字符串数组:

        字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。


C中定义字符串的内存表示

        (1)初始化的方法:1.char TheString[100] = {""};

                                 2.char TheString[] = "";

        (2)关于'\0':因为字符串数组是用null字符终止的一维数组,所以在字符串初始化的时候,为保证数组不越界,输入的字符数量应当是数组长度-1,否则由于\0的存在,会导致数组越界。

        (3)字符串数组的中文输入:字符串中是可以输入中文的,每一个中文字符占2个字符的大小,当我们定义一个长度为10的字符串数组的时候,我们只能输入4个汉字(由于最后\0的存在)。当我们需要提出汉字字符串中的一个汉字的时候,需要用到循环提出汉字所占的那两个位的字符。

        (4)字符串数组的输出:printf("%s",字符串数组名);

                                             puts(字符串数组名)

        (5)字符串数组的输入:scanf("%s",字符串数组名)//当我们使用%s的时候,后面的字符串数组名是不需要使用取地址符的。

                                            gets(字符串数组名);

        (6)二位字符串数组:二位字符串数组中可存放多个字符串,char String[3][10]={"1111","2222","3333"};调用的时候只需使用String[0]就可调用出此数组中的第一个字符串。

2.操作字符串的函数:

操作字符串的函数

补充:memcpy(a,b,length);

           memcmp(a,b,length);

作业题:

1.大(65-90)小(97-122)写字母互换

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main(){

char TheString[80] = {""};

printf("请输入一个字符串:");

gets(TheString);

printf("你输入的字符串是:\n");

puts(TheString);

for(int i=0;i<80;i++){

if(TheString[i]>='A'&&TheString[i]<='Z'){

TheString[i]+=32;

continue;

}

if(TheString[i]>='a'&&TheString[i]<='z'){

TheString[i]-=32;

continue;

}

}

printf("互换后的字符串是:\n");

puts(TheString);

return 0;

}

2.统计各字符个数

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main(){

char TheString[255] = {""};

int i=0;

char temp;

printf("请输入一串字符以#结束!\n");

while(temp=getchar(),temp!='#'){

TheString[i] = temp;

i++;

}

puts(TheString);

int num=0,xiaoxie=0,daxie=0,qita=0;

for(int j=0;j<i;j++){

if(TheString[j]<='9'&&TheString[j]>='0'){

num++;

}

else if(TheString[j]<='z'&&TheString[j]>='a'){

xiaoxie++;

}

else if(TheString[j]<='Z'&&TheString[j]>='A'){

daxie++;

}

else{

qita++;

}

}

printf("数字:%d\n小写字母:%d\n大写字母:%d\n其他:%d\n",num,xiaoxie,daxie,qita);

return 0;

}

3.输入两行内容,第1行是原文(长度不超过200个字符),第2行包含以空格分隔的两个字符A和B,要求将原文中所有的字符A都替换成字符B,注意:区分大小写字母。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main(){

char YuanWen[200]={""};

char greeting[] = "Hello";

gets(YuanWen);

puts(YuanWen);

char A,B;

printf("请输入两个字符,被替换的在前:\n");

scanf("%c %c",&A,&B);

for(int i=0;i<200;i++){

if(YuanWen[i]==A){

YuanWen[i]=B;

}

else{

continue;

}

}

puts(YuanWen);

puts(greeting);

return 0;

}

4.哥德巴赫猜想

#include<stdio.h>

#include<stdlib.h>

void Goldbach(int n);

int main() {

int t;

printf("请输入数字,输入0停止:\n");

scanf("%d", &t);

while (t!=0){

Goldbach(t);

scanf("%d", &t);

}

system("pause");

return 0;

}

void Goldbach(int n) {

int *a = (int *)malloc(n * sizeof(int));

int temp = 0;

if (n % 2 != 0||n<=2) {

printf("请输入一个偶数且大于2!\n");

}

else {

for (int i = 2; i <= n; i++) {

for (int j = 2; j <= i; j++) {

if (i%j == 0 && i != j) {

break;

}

if (i == j&&i%j == 0) {

a[temp] = i;

temp++;

}

}

}

}

for (int i = 0; i < temp; i++) {

int temp1;

temp1 = n - a[i];

for (int j = 0; j < temp; j++) {

if (temp1 == a[j]&&temp1<=a[i]) {

printf("%d=%d+%d\n", n, temp1, a[i]);

}

}

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,749评论 0 2
  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 9,521评论 2 13
  • C语言程序设计 QQ群:731871503 功能介绍 从零开始精通C语言教程用于C语言学习交流,分享C语言相关的...
    newer123阅读 3,188评论 0 2
  • C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的 算法 题目:...
    Poison_19ce阅读 4,918评论 0 0
  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 11,527评论 1 42