仅供参考,谢谢!
您是所有题都不会呢?还是就这题不会啊?
试题一:
#include <stdio.h>
int main(void)
{
double sum = 0.0;
for (int i = 1, j = 3; i < 11; i += 2, j += 2)
sum += 1.0 * i / j;
printf("%lf\n", sum);
return 0;
}
试题二:
#include <stdio.h>
//冒泡法排序
void bubsort(int *arr, int n)
{
int flag = 1, tmp;
for (int i = 0; i < n - 1 && flag; i++)
{
flag = 0;
for (int j = 0; j < n - 1; j++)
{
if (arr[j] < arr[j + 1])
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flag = 1;
}
}
}
}
int main(int argc, char *argv[])
{
int arr[6];
for (int i = 0; i < 6; i++)
scanf("%d", &arr[i]);
bubsort(arr, 6);
for (int i = 0; i < 6; i++)
printf("%d ", arr[i]);
puts("");
return 0;
}
试题三:
#include <stdio.h>
//大小写字母互转
void makeAlp(char *s)
{
while (*s != '\0')
{
if (*s >= 'a' && *s <= 'z')
*s -= 32;
else if (*s >= 'A' && *s <= 'Z')
*s += 32;
s++;
}
}
//逆序输出
void resPuts(char *s)
{
char *p = s;
while (*p != '\0')
p++;
while (p >= s)
putchar(*p--);
}
int main(void)
{
char str[13];
scanf("%10s", str);
makeAlp(str);
resPuts(str);
return 0;
}
试题四:
#include <stdio.h>
#define swap(x, y) {int temp = x; x = y; y = temp;}
int main(void)
{
int i, arr[10], min, max, mini = 0, maxi = 0;
int *pmax = &arr[0];
for (int i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
max = min = arr[0];
for (i = 1; i < 10; i++)
{
if (arr[i] > max)
{
max = arr[i];
maxi = i;
}
if (arr[i] < min)
{
min = arr[i];
mini = i;
}
}
//调换位置
swap(arr[0], arr[mini]);
swap(arr[9], *(pmax + maxi));
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
puts("");
return 0;
}
试题五:
#include <stdio.h>
void make(int n)
{
int arr[n][n];
arr[0][0] = 1;
printf("%d\n", arr[0][0]);
for (int i = 1; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
if (j == 0 || j == i)
arr[i][j] = 1;
else
{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
printf("%-5d", arr[i][j]);
}
puts("");
}
}
int main(void)
{
make(10);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s[11] = {0} , *p = s;
int i=0,len = 0;
gets(p);
while(*(p+i) != 0)
{
len++;
if(*(p+i) >= 'A' && *(p+i) <= 'Z')
*(p+i) += 32;
else if(*(p+i) >= 'a' && *(p+i) <= 'z')
*(p+i) -= 32;
i++;
}
for(i=len-1;i>=0;i--)
printf("%c",*(p+i) );
}
参考GPT和自己的思路,以下是使用指针进行大小写互换和逆向输出的示例代码:
#include <stdio.h>
#include <string.h>
void reverse_and_swap_case(char *str) {
// 获取字符串长度
int len = strlen(str);
// 逆向输出并大小写互换
for (int i = len - 1; i >= 0; i--) {
// 判断字符是否为字母
if (isalpha(str[i])) {
// 如果是大写字母,转换为小写字母
if (isupper(str[i])) {
printf("%c", tolower(str[i]));
}
// 如果是小写字母,转换为大写字母
else {
printf("%c", toupper(str[i]));
}
}
// 如果不是字母,直接输出
else {
printf("%c", str[i]);
}
}
}
int main() {
char str[11];
printf("请输入不超过10个字母的字符串:");
scanf("%10s", str);
printf("转换后的字符串为:");
reverse_and_swap_case(str);
return 0;
}
在这个示例代码中,reverse_and_swap_case 函数接受一个字符串指针作为参数,首先获取字符串的长度,然后从后往前逐个遍历字符串中的字符,如果字符是字母,则进行大小写互换,并输出到控制台上;如果字符不是字母,则直接输出。在 main 函数中,用户可以输入一个不超过 10 个字母的字符串,然后调用 reverse_and_swap_case 函数进行转换,并输出转换后的字符串。
如果对您有帮助,请给与采纳,谢谢。
该回答内容部分引用GPT,GPT_Pro更好的解决问题
答:要实现键盘输入不超过10个字母的字符串将其大小写互换并逆向输出的目的,可以使用指针来实现。可以先使用scanf函数从键盘输入10个字母,然后将其保存到字符数组里,然后利用指针对字符数组里的每一个字符进行大小写转换,最后利用循环和指针将转换后的字符串逆序输出即可。
例如:
#include <stdio.h>
#include <string.h>
int main()
{
char str[11]; // 定义一个字符数组,用来保存10个字母
printf("请输入10个字母:");
scanf("%s", str); // 从键盘上输入10个字母
char *p = str; //定义一个指针变量p,指向str数组的首地址
while (*p != '\0') // 利用循环和指针对字符数组里的每一个字符进行大小写转换
{
if ( *p >= 'A' && *p <= 'Z' ) // 如果是大写字母,则转为小写
{
*p = *p + 32;
}
else if ( *p >= 'a' && *p <= 'z' ) // 如果是小写字母,则转为大写
{
*p = *p - 32;
}
p++; // 指针变量p的值加1,即将指针向前移动一位
}
printf("转换大小写后的字符串:");
int len = strlen(str); // 求出转换后的字符串的长度
for (int i=len-1; i>=0; i--) // 利用循环和指针将转换后的字符串逆序输出
{
char *q = &str[i]; // 定义一个新的指针变量q,将其赋值为str数组最后一位地址(逆序时从最后一位开始打印)
printf("%c", *q); // 打印出当前位置的字符
q--; // 指针变量q的值减1,即将指针向前移动一位
}
printf("\n");
return 0;
}
如果回答有帮助,望采纳。
#include <stdio.h>
#include <string.h>
void reverse_string(char *str) {
int i = 0;
int j = strlen(str) - 1;
char temp;
while (i < j) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
}
void swap_case(char *str) {
while (*str != '\0') {
if (*str >= 'a' && *str <= 'z') {
*str = *str - ('a' - 'A');
}
else if (*str >= 'A' && *str <= 'Z') {
*str = *str + ('a' - 'A');
}
str++;
}
}
int main() {
char str[11];
printf("请输入不超过10个字母的字符串: ");
scanf("%s", str);
swap_case(str);
reverse_string(str);
printf("转换后的字符串为: %s\n", str);
return 0;
}
以下答案基于ChatGPT与GISer Liu编写:
以下是一个C++程序,它可以实现您所描述的操作:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[11];
cout << "请输入不超过10个字母的字符串:" << endl;
cin >> str;
int len = strlen(str);
char *p = str + len - 1;
cout << "大小写互换并逆向输出的结果是:" << endl;
while (p >= str) {
if (*p >= 'a' && *p <= 'z') {
cout << (char)(*p - 'a' + 'A');
} else if (*p >= 'A' && *p <= 'Z') {
cout << (char)(*p - 'A' + 'a');
} else {
cout << *p;
}
p--;
}
cout << endl;
return 0;
}
程序首先从标准输入流中读入一个不超过10个字母的字符串。然后,它使用指针来逆向遍历字符串中的每个字符,对于字母字符,它将其大小写互换,对于非字母字符,它直接输出。最后,程序输出大小写互换并逆向输出的结果。
§§ 1000
+#C语言 键盘输入不超过个字母的字符串
+代码可以使用以下形式:
§§ --- README.md
-方法1:
§§ 1002
+##方法1:
§§ --- README.md
-char str[100];
-scanf("%s",str);
§§ 1004
+ char str[100];
+ scanf("%s",str);
§§ --- README.md
-方法2:
§§ 1007
+##方法2:
§§ --- README.md
-char str[100];
-int i=0;
-char ch;
-while((ch=getchar())!='/n')
- str[i++]=ch;
-str[i]='/0';
§§ 1009
+ char str[100];
+ int i=0;
+ char ch;
+ while((ch=getchar())!='/n')
+ str[i++]=ch;
+ str[i]='/0';
不知道你这个问题是否已经解决, 如果还没有解决的话: