1、写一个函数打印arr数组的内容,不使用数组下标,使用指针。
arr是一个整形一维数组。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//写一个函数打印arr数组的内容,不使用数组下标,使用指针。
//arr是一个整形一维数组。
void PrintArr(int *p,int len)
{
for (int i = 0; i < len; i++)
{
printf("%d ", *(p + i));
}
}
int main()
{
int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int len = sizeof(arr) / sizeof(arr[0]);
int *p = arr;
PrintArr(p, len);
}
2、写一个函数,可以逆序一个字符串的内容。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//#include <string.h>
//写一个函数,可以逆序一个字符串的内容。
int Reverse(char *arr,int len)
{
char *left = arr;
char *right = arr + len - 2;
for (int i = 0; i < len/2; i++)
{
char tmp = 1;
tmp = *(left+i);
*(left + i) = *(right-i);
*(right - i) = tmp;
}
//while (left < right){
// char temp = *left;
// *left = *right;
// *right = temp;
// left++, right--;
//}
}
int main()
{
char arr[] = "hello tomorrow";
int len = sizeof(arr) / sizeof(arr[0]);//把‘\0’算进去了
printf("逆置之前:%s\n", arr);
Reverse(arr,len);
printf("逆置值后:%s\n", arr);
return 0;
}
3、求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
//求Sn = a + aa + aaa + aaaa + aaaaa的前5项之和,其中a是一个数字,
//例如:2 + 22 + 222 + 2222 + 22222
int Add(int* a)
{
int arr[5] = {0};
int Sn = 0;
arr[0] = *a;
for (int i = 1; i < 5; i++)
{
arr[i] = arr[i - 1] + (*a) * pow(10, i);
}
for (int i = 0; i < 5; i++)
{
Sn += arr[i];
}
return Sn;
}
int main()
{
int a = 2;
int Sn = Add(&a);
printf("%d\n", Sn);
return 0;
}
4、求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=13+53+3^3,则153是一个“水仙花数”。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
//求出0~100000之间的所有“水仙花数”并输出。
//“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如 : 153=1 ^ 3+5 ^ 3+3 ^ 3,则153是一个“水仙花数”
//计算几位数
int Digit(int x)
{
int n; //n位数
for (n = 1; n < 7; n++)
{
if (x > 9)
{
x = ((x) / 10);
continue;
}
else
{
break;
}
}
return n;
}
//判断是否为水仙花数
int Narcissus(int *n,int *x)
{
int a = 0; //等号右边结果
int b = *x; //等号左边数字
for (int i = 1; i <= *n; i++)
{
a += pow((b % 10), *n);
b = b / 10;
}
if (a == *x)
{
return *x;
}
else
{
return -1;
}
}
int main()
{
//int x = 153;
//int n = Digit(x);
//int m = Narcissus(&n, &x);
//printf("%d ", m);
int x; //遍历的数字
for (x = 0; x <= 100000; x++)
{
int n = Digit(x); //n位数
int m = Narcissus(&n, &x);
if (m == -1)
{
continue;
}
else
{
printf("%d ", m);
}
}
return 0;
}
5、用C语言在屏幕上输出以下图案:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
//用C语言在屏幕上输出菱形
void Diamond(int n)
{
int a, b, c;
for (a = 1; a <= n; a++)
{
for (b = 1; b <= abs(a - (n / 2 + 1)); b++)
{
printf(" ");
}
for (c = 1; c <= n - 2 * abs(a - (n / 2 + 1)); c++)
{
printf("*");
}
printf("\n");
}
}
int main()
{
Diamond(13);
return 0;
}
6、喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。
int Drink(int money)
{
int bot = money;
int add = 0;
int nobot = money;
for (int i = 0; i < 100; i++)
{
add = nobot / 2;
if (nobot % 2 == 1)
{
nobot = add;
nobot++;
}
else
{
nobot = add;
}
bot += add;
if (nobot == 1){
break;
}
}
return bot;
}
int main()
{
int bot = Drink(20);
printf("%d", bot);
}
7、VS开发环境调试下面的代码,画图解释下面代码的问题
#include <stdio.h>
int main()
{
int i = 0;
int arr[] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<=12; i++)
{
arr[i] = 0;
printf("hello bit\n");
}
return 0;
}
8、模拟实现库函数strlen
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//模拟实现库函数strlen
int strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "hello tomorrow";
int str = strlen(arr);
printf("%d", str);
return 0;
}
9、模拟实现库函数strcpy
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
void my_strcpy(char* str, const char* ret)
{
assert(*str != 'NULL');
assert(*ret != 'NULL');
while (*str++ = *ret++)
{
;
}
}
int main()
{
char arr1[] = "##############";
char arr2[] = "hello tomorrow";
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
10、输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//输入一个整数数组,实现一个函数,
//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
//所有偶数位于数组的后半部分。
void Adjust(int arr[], int len)
{
int i, j;
for (i = 0; i < len; i++)
{
if ((arr[i] % 2) == 0)
for (j = i + 1; j < len; j++)
{
int temp;
if ((arr[j] % 2) == 1)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
break;
}
}
}
}
int main()
{
int arr[] = { 24, 64, 12, 61, 35, 46, 75, 97, 44, 66 };
int len = sizeof(arr) / sizeof(arr[0]);
Adjust(arr, len);
for (int i = 0; i < len; i++)
{
printf("%3d", arr[i]);
}
}