1.题目要求:使用函数打印一个乘法表
eg:输入:12
输出:12×12的乘法表
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void Print_table(int n)
{
for(int i = 1;i<=n;i++)
for (int j = 1; j <= i; j++)
{
printf("%d × %d = %d\t", j, i, i * j);
if (i == j)
printf("\n");
}
}
int main()
{
int n = 0;
scanf("%d", &n);
Print_table(n);
return 0;
}
结果:
2.题目要求:将一个数组颠倒
eg:数组arr[]="a b c d e f g"
经过变化之后输出g f e d c b a
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void Reversed_string(char *str)
{
int left = 0;
int right = strlen(str) - 1;//求数组长度
while (right > left)//对数组进行变换
{
char k = str[left] ;
str[left] = str[right];
str[right] = k;
right--;
left++;
}
}
int main()
{
char arr[] = "a b c d e f g";//对数组进行定义
Reversed_string(arr);//对数组进行处理
puts(arr);
return 0;
}
结果:
难度升级:题目不变,不可以使用C语言库中的函数(即不可以使用strlen()sizeof())
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int my_Strlen(char *str)//strlen(str)的替代函数
{
int c = 0;
do
{
c++;
str++;
} while (*str != '\0');
return c;//此时c = strlen(str)
}
void Reversed_string(char *str)
{
int left = 0;
int right = my_Strlen(str) - 1;
while (right > left)
{
char k = str[left] ;
str[left] = str[right];
str[right] = k;
right--;
left++;
}
}
int main()
{
char arr[] = "a b c d e f g";
Reversed_string(arr);
printf("%s\n",arr);
return 0;
}
结果:
3.使用指针打印数组{a,b,c,,d,e}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char a[5] = { 'a','b','c','d','e'};
char* p;
for (p = a; p < a + 5; p++)
printf("%c ", *p);
return 0;
}
变式:使用指针打印可输入数组,数组内有五个数(要求使用puts进行打印)
如:输入1 2 c d e 输入 1 2 c d e
分析:此题难点为用puts函数进行打印,但是puts函数将遇到'\0'时才停止打印,如果没有'\0'将会打印额外乱码;题目要求可以输入数字和字母,则数组应使用char;要使用指针来进行打印,则需了解指针的基础知识
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char *p ,a[6] = {0};//初始化数组,因为要使用puts,所以数组空间应要大一点,定义指针
for (p = a; p < a + 5; p++) scanf("%c", p);
//for (p = a; p < a + 5; p++) printf("%c", *p);//若使用printf函数这样题目就完成了\
但是题目要求使用puts,那么就得进行如下操作;
a[5] = '\0';
puts(a);
return 0;
}
例题结果为: