C语言指针的一些题目
1.将从键盘输入的每个单词的第一个字母转换成大写字母输入时各单词以空格隔开,用“.”结束输入
解体思路: 把输入的字符存入字符数组中直到输入".",然后调用函数,把字符串的第一个字符(即是第一个单词的第一个字母)转换成大写字母,然后之后的每一个单词的第一个字母的怕判断方法是:通过判断一个字符是否是空格,以及空格后是否是字母,若均满足,则将这个字符后面的那个字符就是一个单词的第一个字母,将其转换成大写字母
代码如下:
#include <stdio.h>
#include <ctype.h> void transfer(char *a , int n )
{
int i; *a = toupper(*a);
for(i=;i<n;i++)
{
if(*a ==' '&&isalpha(*(a+)))
*(a+) = toupper(*(a+));
a++;
}
*a = '\0'; } int main(void)
{
char string[] ;
int i = ; printf("Enter word end with . :");
do
{
scanf("%c",&string[i]);
i++;
} while(string[i-]!='.'); transfer(string,i);
puts(string); return ;
}
2. 从键盘输入一个字符串, 编写一个函数, 在函数中将字符串从第m个字符开始的n个字符复制成另一个字符串
解体思路: 函数的参数为两个字符指针a、b和int型的m, n,从m-1位开始一直到m+n-1把字符指针a中的每一位赋给b
代码如下:
#include <stdio.h>
void copy(char *a , char *b , int m, int n)
{
int k;
//把字符串a的第i-1位之后的j位赋给b
for(k=m-;k<=m+n-;k++)
{
*b = *(a+k);
b++;
} *b = '\0';
} int main(void)
{
int i , m , n;
char string[] , s[] ; printf("Enter the string: ");
gets(string); //输入string
printf("To copy string's n character from m character to s\n");
printf("Enter m and n : ");
scanf("%d %d",&m,&n); copy(string , s ,m , n); //输出s
for(i=;i<n;i++)
printf("%c",s[i]);
printf("\n"); return ;
}
3.输入8个整数,将其中最大的数与第一个数对换,最小的数与最后一个数对换
解体思路:先申明两个int型的指针,用来指向最大值和最小值,遍历数组把最大值指针指向最大值,最小值指针指向最小值,然后把最大值指针指向的数和数组第一个对换,最小值指针指向的数和数组最后一个对换
代码如下:
#include <stdio.h>
#define N 8 void change(int *a, int *b,int sad[]);
int main(void)
{
int *max , *min ; //指向最大值和最小值的指针
int a[N] , i ; //输入这8个数
printf("Enter %d integer numbers: ",N);
for(i=;i<N;i++)
scanf("%d",&a[i]); //初始化最大值和最小值指针
max = a;
min = a + N -; for(i=;i<N;i++)
{
if(a[i]>*max) max = a+i; //修改最大值指针的指向
if(a[i]<*min) min = a+i; //修改哦最小值指针的指向
} change(max,min,a); //输出交换后的数组
for(i=;i<N;i++)
printf("%5d",*(a+i));
printf("\n");
return ;
} //把最大值指针指向的数和数组第一个对换
//最小值指针指向的数和数组最后一个对换
void change(int *a, int *b,int sad[])
{
int *first , *last , temp = , tem = ;
first = sad;
last = sad + N -; temp = *first;
*first = *a;
*a = temp; tem = *last;
*last = *b;
*b = tem;
}
4.输入n个整数排序并输出
解体思路: 使用选择排序,每次选择最小的一个数放在序列的起始位置
代码如下:
#include <stdio.h> void sort(int *a,int n) // slection sort
{
int i , j;
//从第一个开始,依次选择最小的放在序列的第一位
//外层循环一次,序列向后推一位
for(i=;i<n-;i++)
{
for(j=i+;j<n;j++)
{
if(*(a+j)<*(a+i))
{
int temp;
temp = *(a+j);
*(a+j) = *(a+i);
*(a+i) = temp;
}
}
} } int main(void)
{
int i , n , *p;
int arr[];
p = arr; //输入数组元素个数
printf("Enter n: ");
scanf("%d",&n); //输入数组
printf("Enter %d integer numbers: ",n);
for(i=;i<n;i++)
scanf("%d",p++); //输出输入的数组
p = arr;
for(i=;i<n;i++)
printf("%5d",*(p++));
printf("\n"); //选择排序
sort(arr,n); //输出排序后的数组
p = arr;
for(i=;i<n;i++)
printf("%5d",*(p++));
printf("\n"); return ;
}
5. 输入字符串 内含数字和非数字字符,将数字提取出依次存放到数组中,输出整数的个数和这些数
解题思路:把字符读入字符数组中,然后循环遍历字符数组中的字符判断其是否是数字,若是就存入数组中,并把数字个数加一。
#include <stdio.h>
#include <string.h> int main()
{
int n, i, j=;
int find_num=; //数字的个数
int a[], num=; //存储数字的数组和存储数字的临时变量
char s[], c; //字符数组和临时字符 //输入字符串
printf("Enter a string: ");
gets(s);
//求出字符串的长度
n = strlen(s); //循环遍历字符数组
for(i=;i<=n;i++)
{
c = s[i];
if(c>=''&&c<='')
{
num = c-''; //将字符(0到9)转换成数字
a[j++] = num;
find_num++;
}
} printf("The number of integers is %d\n",j);
for(i=;i<j;i++)
printf("%d\t",*(a+i)); return ;
}
C语言指针的一些题目的更多相关文章
- (转载)c语言指针学习
前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...
- C语言指针【转】
一.C语言指针的概念 在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细 ...
- c语言指针学习【转】
前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...
- C语言指针的大小
C语言指针的大小 今天看到一道题目是这样的,写出以下变量在32位设备上的大小(占多少个字节) 然后其中就有一些指针类型的数据,那么我们知道在C语言中指针的大小都是一样的,不管是有数据类型的还是void ...
- C语言指针转换为intptr_t类型
1.前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量.由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针.感觉很奇怪,为何要将一个指针 ...
- [转]C语言指针学习经验总结浅谈
指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...
- 不可或缺 Windows Native (7) - C 语言: 指针
[源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...
- C语言指针学习
C语言学过好久了,对于其中的指针却没有非常明确的认识,趁着有机会来好好学习一下,总结一下学过的知识,知识来自C语言指针详解一文 一:指针的概念 指针是一个特殊的变量,里面存储的数值是内存里的一个地址. ...
- 关于C语言指针的问题
在学习关于C语言指针的时候,发现这样一个问题,代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h&g ...
随机推荐
- QtTcp_资料
1.百度搜索关键字“Qt TCP” 2. 2.1.Qt学习之路_5(Qt TCP的初步使用) http://www.cnblogs.com/tornadomeet/archive/2012/06/30 ...
- android 官方demo地址
android官方demo地址都放在了github上:https://github.com/googlesamples
- [eclipse]eclipse设置条件断点Breakpoint Properties
1.在你要想停下的行上添加断点,在断点标记上单击右键,然后打开断点属性(Breakpoint Properties) 2.在断点属性(Breakpoint Properties)编辑对话框中勾选ena ...
- 前端框架MVVM是什么(整理)
前端框架MVVM是什么(整理) 一.总结 一句话总结:vm层(视图模型层)通过接口从后台m层(model层)请求数据,vm层继而和v(view层)实现数据的双向绑定. 1.我大前端应该不应该做复杂的数 ...
- 雷林鹏分享:Ruby File 类和方法
Ruby File 类和方法 File 表示一个连接到普通文件的 stdio 对象.open 为普通文件返回该类的一个实例. 类方法 序号方法 & 描述 1File::atime( path) ...
- UVA-129 Krypton Factor(回溯)
题目大意:由字母A到Z组成的字符串,其中有两个子串完全相同的叫做容易的串,反之叫困难的串.找出由前L个字母组成的第n个困难的串. 题目分析:简单回溯,不过要判断是否存在重复子串比较棘手.<入门经 ...
- IAR使用notice
1.IAR中无法程序跳转问题 在工程的C编译器选项里的预编译添加$TOOLKIT_DIR$\inc解决,需要clean一下工程再make即可.($TOOLKIT_DIR$:这个语法表示包含文件的路径在 ...
- 微信小程序navigateTo /redirectTo/navigateBack 三者区别
navigateTo 不会将旧页面出栈: redirectTo 会将旧页面出栈,再将需要跳转到的页面入栈: navigateBack 则是将页面栈最后一个元素出栈,因此倒数第二个元素会成为最后一个元素 ...
- FZU 2169 shadow spfa
题目链接:shadow 好佩服自己耶~~~好厉害~~~ 麻麻再也不用担心我的spfa 和 邻接表技能了~~~ spfa 记录最短路径. #include <stdio.h> #includ ...
- Nvidia Driver
https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/ https://javacodes.cn/322.html https ...